Duffer Derek

Current Path : /var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/recharts/umd/
Upload File :
Current File : /var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/recharts/umd/Recharts.js.map

{"version":3,"file":"Recharts.js","mappings":"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,QACA,OACA,KACA,WACA,YACA,OACA,WACA,gBACA,WACA,qBACA,4BACA,eACA,iBACA,oBACA,mBACA,SACA,KACA,KACA,IACA,aACA,UACA,kBACA,YACA,UACA,UACA,mBACA,MACA,KACA,KACA,WACA,YACA,mBACA,MACA,WACA,4BACA,OACA,cACA,WACA,SACA,YACA,cACA,aACA,eACA,YACA,aACA,WACA,iBACA,cACA,YACA,cACA,aACA,SACA,OACA,KACA,KACA,KACA,KACA,YACA,6BACA,2BACA,WACA,oBACA,gBACA,UACA,YACA,eACA,OACA,cACA,iBACA,MACA,KACA,YACA,KACA,KACA,KACA,KACA,IACA,eACA,mBACA,UACA,YACA,aACA,WACA,eACA,gBACA,gBACA,oBACA,QACA,YACA,eACA,YACA,cACA,cACA,cACA,OACA,mBACA,YACA,eACA,OACA,aACA,SACA,UACA,WACA,QACA,SACA,cACA,SACA,WACA,mBACA,oBACA,aACA,UACA,aACA,sBACA,mBACA,eACA,gBACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,IACA,SACA,OACA,OACA,kBACA,cACA,YACA,qBACA,mBACA,UACA,SACA,SACA,KACA,KACA,OACA,iBACA,QACA,UACA,mBACA,mBACA,QACA,eACA,cACA,eACA,QACA,QACA,cACA,YACA,cACA,wBACA,yBACA,SACA,SACA,kBACA,mBACA,gBACA,iBACA,mBACA,gBACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,iBACA,aACA,gBACA,KACA,YACA,KACA,KACA,oBACA,qBACA,UACA,cACA,eACA,aACA,cACA,SACA,eACA,UACA,WACA,cACA,cACA,WACA,eACA,aACA,aACA,gBACA,SACA,cACA,cACA,KACA,KACA,IACA,mBACA,UACA,eACA,eACA,YACA,YACA,YACA,aACA,YACA,UACA,UACA,QACA,aACA,WACA,KACA,KACA,IACA,mBACA,IACA,aACA,MACA,MACA,SAGIC,EAAkB,CAAC,SAAU,cAMtBC,EAAkE,CAC7EC,IA/T2B,CAAC,UAAW,YAgUvCC,QAASH,EACTI,SAAUJ,GAGCK,EAAY,CACvB,0BACA,SACA,gBACA,QACA,eACA,UACA,iBACA,mBACA,0BACA,qBACA,4BACA,sBACA,6BACA,UACA,iBACA,SACA,gBACA,WACA,kBACA,gBACA,uBACA,UACA,iBACA,UACA,iBACA,WACA,kBACA,YACA,mBACA,SACA,gBACA,UACA,iBACA,YACA,mBACA,aACA,oBACA,UACA,iBACA,UACA,iBACA,YACA,mBACA,mBACA,0BACA,mBACA,0BACA,YACA,mBACA,cACA,qBACA,UACA,iBACA,eACA,sBACA,mBACA,0BACA,cACA,qBACA,UACA,iBACA,SACA,gBACA,YACA,mBACA,aACA,oBACA,eACA,sBACA,WACA,kBACA,YACA,mBACA,YACA,mBACA,YACA,mBACA,eACA,sBACA,iBACA,wBACA,YACA,mBACA,aACA,oBACA,UACA,iBACA,gBACA,uBACA,gBACA,uBACA,SACA,gBACA,YACA,mBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,SACA,gBACA,cACA,qBACA,eACA,eACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,YACA,mBACA,WACA,kBACA,gBACA,uBACA,aACA,oBACA,cACA,qBACA,eACA,sBACA,gBACA,uBACA,gBACA,uBACA,cACA,qBACA,kBACA,yBACA,iBACA,wBACA,iBACA,wBACA,gBACA,uBACA,eACA,sBACA,sBACA,6BACA,uBACA,8BACA,WACA,kBACA,UACA,iBACA,mBACA,0BACA,iBACA,wBACA,uBACA,8BACA,kBACA,0BAwLWC,EAAqB,SAChCxa,EACAya,GAEA,IAAKza,GAA0B,mBAAVA,GAAyC,kBAAVA,EAClD,OAAO,KAGT,IAAI0a,EAAa1a,EAMjB,IAJI2a,EAAAA,EAAAA,gBAAe3a,KACjB0a,EAAa1a,EAAMA,QAGhBlB,IAAS4b,GACZ,OAAO,KAGT,IAAME,EAAwC,CAAC,EAQ/C,OANA1kB,OAAOyH,KAAK+c,GAAY5a,SA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","sources":["webpack://Recharts/webpack/universalModuleDefinition","webpack://Recharts/./node_modules/decimal.js-light/decimal.js","webpack://Recharts/./node_modules/eventemitter3/index.js","webpack://Recharts/./node_modules/lodash/_DataView.js","webpack://Recharts/./node_modules/lodash/_Hash.js","webpack://Recharts/./node_modules/lodash/_ListCache.js","webpack://Recharts/./node_modules/lodash/_Map.js","webpack://Recharts/./node_modules/lodash/_MapCache.js","webpack://Recharts/./node_modules/lodash/_Promise.js","webpack://Recharts/./node_modules/lodash/_Set.js","webpack://Recharts/./node_modules/lodash/_SetCache.js","webpack://Recharts/./node_modules/lodash/_Stack.js","webpack://Recharts/./node_modules/lodash/_Symbol.js","webpack://Recharts/./node_modules/lodash/_Uint8Array.js","webpack://Recharts/./node_modules/lodash/_WeakMap.js","webpack://Recharts/./node_modules/lodash/_apply.js","webpack://Recharts/./node_modules/lodash/_arrayEach.js","webpack://Recharts/./node_modules/lodash/_arrayEvery.js","webpack://Recharts/./node_modules/lodash/_arrayFilter.js","webpack://Recharts/./node_modules/lodash/_arrayIncludes.js","webpack://Recharts/./node_modules/lodash/_arrayIncludesWith.js","webpack://Recharts/./node_modules/lodash/_arrayLikeKeys.js","webpack://Recharts/./node_modules/lodash/_arrayMap.js","webpack://Recharts/./node_modules/lodash/_arrayPush.js","webpack://Recharts/./node_modules/lodash/_arraySome.js","webpack://Recharts/./node_modules/lodash/_asciiToArray.js","webpack://Recharts/./node_modules/lodash/_assignValue.js","webpack://Recharts/./node_modules/lodash/_assocIndexOf.js","webpack://Recharts/./node_modules/lodash/_baseAssign.js","webpack://Recharts/./node_modules/lodash/_baseAssignIn.js","webpack://Recharts/./node_modules/lodash/_baseAssignValue.js","webpack://Recharts/./node_modules/lodash/_baseClone.js","webpack://Recharts/./node_modules/lodash/_baseCreate.js","webpack://Recharts/./node_modules/lodash/_baseEach.js","webpack://Recharts/./node_modules/lodash/_baseEvery.js","webpack://Recharts/./node_modules/lodash/_baseExtremum.js","webpack://Recharts/./node_modules/lodash/_baseFindIndex.js","webpack://Recharts/./node_modules/lodash/_baseFlatten.js","webpack://Recharts/./node_modules/lodash/_baseFor.js","webpack://Recharts/./node_modules/lodash/_baseForOwn.js","webpack://Recharts/./node_modules/lodash/_baseGet.js","webpack://Recharts/./node_modules/lodash/_baseGetAllKeys.js","webpack://Recharts/./node_modules/lodash/_baseGetTag.js","webpack://Recharts/./node_modules/lodash/_baseGt.js","webpack://Recharts/./node_modules/lodash/_baseHasIn.js","webpack://Recharts/./node_modules/lodash/_baseIndexOf.js","webpack://Recharts/./node_modules/lodash/_baseIsArguments.js","webpack://Recharts/./node_modules/lodash/_baseIsEqual.js","webpack://Recharts/./node_modules/lodash/_baseIsEqualDeep.js","webpack://Recharts/./node_modules/lodash/_baseIsMap.js","webpack://Recharts/./node_modules/lodash/_baseIsMatch.js","webpack://Recharts/./node_modules/lodash/_baseIsNaN.js","webpack://Recharts/./node_modules/lodash/_baseIsNative.js","webpack://Recharts/./node_modules/lodash/_baseIsSet.js","webpack://Recharts/./node_modules/lodash/_baseIsTypedArray.js","webpack://Recharts/./node_modules/lodash/_baseIteratee.js","webpack://Recharts/./node_modules/lodash/_baseKeys.js","webpack://Recharts/./node_modules/lodash/_baseKeysIn.js","webpack://Recharts/./node_modules/lodash/_baseLt.js","webpack://Recharts/./node_modules/lodash/_baseMap.js","webpack://Recharts/./node_modules/lodash/_baseMatches.js","webpack://Recharts/./node_modules/lodash/_baseMatchesProperty.js","webpack://Recharts/./node_modules/lodash/_baseOrderBy.js","webpack://Recharts/./node_modules/lodash/_baseProperty.js","webpack://Recharts/./node_modules/lodash/_basePropertyDeep.js","webpack://Recharts/./node_modules/lodash/_baseRange.js","webpack://Recharts/./node_modules/lodash/_baseRest.js","webpack://Recharts/./node_modules/lodash/_baseSetToString.js","webpack://Recharts/./node_modules/lodash/_baseSlice.js","webpack://Recharts/./node_modules/lodash/_baseSome.js","webpack://Recharts/./node_modules/lodash/_baseSortBy.js","webpack://Recharts/./node_modules/lodash/_baseSum.js","webpack://Recharts/./node_modules/lodash/_baseTimes.js","webpack://Recharts/./node_modules/lodash/_baseToString.js","webpack://Recharts/./node_modules/lodash/_baseTrim.js","webpack://Recharts/./node_modules/lodash/_baseUnary.js","webpack://Recharts/./node_modules/lodash/_baseUniq.js","webpack://Recharts/./node_modules/lodash/_baseUnset.js","webpack://Recharts/./node_modules/lodash/_cacheHas.js","webpack://Recharts/./node_modules/lodash/_castPath.js","webpack://Recharts/./node_modules/lodash/_castSlice.js","webpack://Recharts/./node_modules/lodash/_cloneArrayBuffer.js","webpack://Recharts/./node_modules/lodash/_cloneBuffer.js","webpack://Recharts/./node_modules/lodash/_cloneDataView.js","webpack://Recharts/./node_modules/lodash/_cloneRegExp.js","webpack://Recharts/./node_modules/lodash/_cloneSymbol.js","webpack://Recharts/./node_modules/lodash/_cloneTypedArray.js","webpack://Recharts/./node_modules/lodash/_compareAscending.js","webpack://Recharts/./node_modules/lodash/_compareMultiple.js","webpack://Recharts/./node_modules/lodash/_copyArray.js","webpack://Recharts/./node_modules/lodash/_copyObject.js","webpack://Recharts/./node_modules/lodash/_copySymbols.js","webpack://Recharts/./node_modules/lodash/_copySymbolsIn.js","webpack://Recharts/./node_modules/lodash/_coreJsData.js","webpack://Recharts/./node_modules/lodash/_createBaseEach.js","webpack://Recharts/./node_modules/lodash/_createBaseFor.js","webpack://Recharts/./node_modules/lodash/_createCaseFirst.js","webpack://Recharts/./node_modules/lodash/_createFind.js","webpack://Recharts/./node_modules/lodash/_createRange.js","webpack://Recharts/./node_modules/lodash/_createSet.js","webpack://Recharts/./node_modules/lodash/_customOmitClone.js","webpack://Recharts/./node_modules/lodash/_defineProperty.js","webpack://Recharts/./node_modules/lodash/_equalArrays.js","webpack://Recharts/./node_modules/lodash/_equalByTag.js","webpack://Recharts/./node_modules/lodash/_equalObjects.js","webpack://Recharts/./node_modules/lodash/_flatRest.js","webpack://Recharts/./node_modules/lodash/_freeGlobal.js","webpack://Recharts/./node_modules/lodash/_getAllKeys.js","webpack://Recharts/./node_modules/lodash/_getAllKeysIn.js","webpack://Recharts/./node_modules/lodash/_getMapData.js","webpack://Recharts/./node_modules/lodash/_getMatchData.js","webpack://Recharts/./node_modules/lodash/_getNative.js","webpack://Recharts/./node_modules/lodash/_getPrototype.js","webpack://Recharts/./node_modules/lodash/_getRawTag.js","webpack://Recharts/./node_modules/lodash/_getSymbols.js","webpack://Recharts/./node_modules/lodash/_getSymbolsIn.js","webpack://Recharts/./node_modules/lodash/_getTag.js","webpack://Recharts/./node_modules/lodash/_getValue.js","webpack://Recharts/./node_modules/lodash/_hasPath.js","webpack://Recharts/./node_modules/lodash/_hasUnicode.js","webpack://Recharts/./node_modules/lodash/_hashClear.js","webpack://Recharts/./node_modules/lodash/_hashDelete.js","webpack://Recharts/./node_modules/lodash/_hashGet.js","webpack://Recharts/./node_modules/lodash/_hashHas.js","webpack://Recharts/./node_modules/lodash/_hashSet.js","webpack://Recharts/./node_modules/lodash/_initCloneArray.js","webpack://Recharts/./node_modules/lodash/_initCloneByTag.js","webpack://Recharts/./node_modules/lodash/_initCloneObject.js","webpack://Recharts/./node_modules/lodash/_isFlattenable.js","webpack://Recharts/./node_modules/lodash/_isIndex.js","webpack://Recharts/./node_modules/lodash/_isIterateeCall.js","webpack://Recharts/./node_modules/lodash/_isKey.js","webpack://Recharts/./node_modules/lodash/_isKeyable.js","webpack://Recharts/./node_modules/lodash/_isMasked.js","webpack://Recharts/./node_modules/lodash/_isPrototype.js","webpack://Recharts/./node_modules/lodash/_isStrictComparable.js","webpack://Recharts/./node_modules/lodash/_listCacheClear.js","webpack://Recharts/./node_modules/lodash/_listCacheDelete.js","webpack://Recharts/./node_modules/lodash/_listCacheGet.js","webpack://Recharts/./node_modules/lodash/_listCacheHas.js","webpack://Recharts/./node_modules/lodash/_listCacheSet.js","webpack://Recharts/./node_modules/lodash/_mapCacheClear.js","webpack://Recharts/./node_modules/lodash/_mapCacheDelete.js","webpack://Recharts/./node_modules/lodash/_mapCacheGet.js","webpack://Recharts/./node_modules/lodash/_mapCacheHas.js","webpack://Recharts/./node_modules/lodash/_mapCacheSet.js","webpack://Recharts/./node_modules/lodash/_mapToArray.js","webpack://Recharts/./node_modules/lodash/_matchesStrictComparable.js","webpack://Recharts/./node_modules/lodash/_memoizeCapped.js","webpack://Recharts/./node_modules/lodash/_nativeCreate.js","webpack://Recharts/./node_modules/lodash/_nativeKeys.js","webpack://Recharts/./node_modules/lodash/_nativeKeysIn.js","webpack://Recharts/./node_modules/lodash/_nodeUtil.js","webpack://Recharts/./node_modules/lodash/_objectToString.js","webpack://Recharts/./node_modules/lodash/_overArg.js","webpack://Recharts/./node_modules/lodash/_overRest.js","webpack://Recharts/./node_modules/lodash/_parent.js","webpack://Recharts/./node_modules/lodash/_root.js","webpack://Recharts/./node_modules/lodash/_setCacheAdd.js","webpack://Recharts/./node_modules/lodash/_setCacheHas.js","webpack://Recharts/./node_modules/lodash/_setToArray.js","webpack://Recharts/./node_modules/lodash/_setToString.js","webpack://Recharts/./node_modules/lodash/_shortOut.js","webpack://Recharts/./node_modules/lodash/_stackClear.js","webpack://Recharts/./node_modules/lodash/_stackDelete.js","webpack://Recharts/./node_modules/lodash/_stackGet.js","webpack://Recharts/./node_modules/lodash/_stackHas.js","webpack://Recharts/./node_modules/lodash/_stackSet.js","webpack://Recharts/./node_modules/lodash/_strictIndexOf.js","webpack://Recharts/./node_modules/lodash/_stringToArray.js","webpack://Recharts/./node_modules/lodash/_stringToPath.js","webpack://Recharts/./node_modules/lodash/_toKey.js","webpack://Recharts/./node_modules/lodash/_toSource.js","webpack://Recharts/./node_modules/lodash/_trimmedEndIndex.js","webpack://Recharts/./node_modules/lodash/_unicodeToArray.js","webpack://Recharts/./node_modules/lodash/constant.js","webpack://Recharts/./node_modules/lodash/debounce.js","webpack://Recharts/./node_modules/lodash/eq.js","webpack://Recharts/./node_modules/lodash/every.js","webpack://Recharts/./node_modules/lodash/find.js","webpack://Recharts/./node_modules/lodash/findIndex.js","webpack://Recharts/./node_modules/lodash/first.js","webpack://Recharts/./node_modules/lodash/flatMap.js","webpack://Recharts/./node_modules/lodash/flatten.js","webpack://Recharts/./node_modules/lodash/get.js","webpack://Recharts/./node_modules/lodash/hasIn.js","webpack://Recharts/./node_modules/lodash/head.js","webpack://Recharts/./node_modules/lodash/identity.js","webpack://Recharts/./node_modules/lodash/isArguments.js","webpack://Recharts/./node_modules/lodash/isArray.js","webpack://Recharts/./node_modules/lodash/isArrayLike.js","webpack://Recharts/./node_modules/lodash/isBoolean.js","webpack://Recharts/./node_modules/lodash/isBuffer.js","webpack://Recharts/./node_modules/lodash/isEqual.js","webpack://Recharts/./node_modules/lodash/isFunction.js","webpack://Recharts/./node_modules/lodash/isLength.js","webpack://Recharts/./node_modules/lodash/isMap.js","webpack://Recharts/./node_modules/lodash/isNaN.js","webpack://Recharts/./node_modules/lodash/isNil.js","webpack://Recharts/./node_modules/lodash/isNumber.js","webpack://Recharts/./node_modules/lodash/isObject.js","webpack://Recharts/./node_modules/lodash/isObjectLike.js","webpack://Recharts/./node_modules/lodash/isPlainObject.js","webpack://Recharts/./node_modules/lodash/isSet.js","webpack://Recharts/./node_modules/lodash/isString.js","webpack://Recharts/./node_modules/lodash/isSymbol.js","webpack://Recharts/./node_modules/lodash/isTypedArray.js","webpack://Recharts/./node_modules/lodash/keys.js","webpack://Recharts/./node_modules/lodash/keysIn.js","webpack://Recharts/./node_modules/lodash/last.js","webpack://Recharts/./node_modules/lodash/map.js","webpack://Recharts/./node_modules/lodash/mapValues.js","webpack://Recharts/./node_modules/lodash/max.js","webpack://Recharts/./node_modules/lodash/maxBy.js","webpack://Recharts/./node_modules/lodash/memoize.js","webpack://Recharts/./node_modules/lodash/min.js","webpack://Recharts/./node_modules/lodash/minBy.js","webpack://Recharts/./node_modules/lodash/noop.js","webpack://Recharts/./node_modules/lodash/now.js","webpack://Recharts/./node_modules/lodash/omit.js","webpack://Recharts/./node_modules/lodash/property.js","webpack://Recharts/./node_modules/lodash/range.js","webpack://Recharts/./node_modules/lodash/some.js","webpack://Recharts/./node_modules/lodash/sortBy.js","webpack://Recharts/./node_modules/lodash/stubArray.js","webpack://Recharts/./node_modules/lodash/stubFalse.js","webpack://Recharts/./node_modules/lodash/sumBy.js","webpack://Recharts/./node_modules/lodash/throttle.js","webpack://Recharts/./node_modules/lodash/toFinite.js","webpack://Recharts/./node_modules/lodash/toInteger.js","webpack://Recharts/./node_modules/lodash/toNumber.js","webpack://Recharts/./node_modules/lodash/toString.js","webpack://Recharts/./node_modules/lodash/uniqBy.js","webpack://Recharts/./node_modules/lodash/upperFirst.js","webpack://Recharts/./node_modules/react-is/cjs/react-is.production.min.js","webpack://Recharts/./node_modules/react-is/index.js","webpack://Recharts/external umd {\"root\":\"PropTypes\",\"commonjs2\":\"prop-types\",\"commonjs\":\"prop-types\",\"amd\":\"prop-types\"}","webpack://Recharts/external umd {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack://Recharts/external umd {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack://Recharts/webpack/bootstrap","webpack://Recharts/webpack/runtime/compat get default export","webpack://Recharts/webpack/runtime/define property getters","webpack://Recharts/webpack/runtime/global","webpack://Recharts/webpack/runtime/hasOwnProperty shorthand","webpack://Recharts/webpack/runtime/make namespace object","webpack://Recharts/webpack/runtime/node module decorator","webpack://Recharts/./node_modules/clsx/dist/clsx.mjs","webpack://Recharts/./src/util/DataUtils.ts","webpack://Recharts/./src/util/ShallowEqual.ts","webpack://Recharts/./src/util/types.ts","webpack://Recharts/./src/util/ReactUtils.ts","webpack://Recharts/./src/container/Surface.tsx","webpack://Recharts/./src/container/Layer.tsx","webpack://Recharts/./src/util/LogUtils.ts","webpack://Recharts/./node_modules/d3-shape/src/math.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/circle.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/cross.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/diamond.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/square.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/star.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/triangle.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/wye.js","webpack://Recharts/./node_modules/d3-shape/src/constant.js","webpack://Recharts/./node_modules/d3-path/src/path.js","webpack://Recharts/./node_modules/d3-shape/src/path.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/asterisk.js","webpack://Recharts/./node_modules/d3-shape/src/symbol/triangle2.js","webpack://Recharts/./src/shape/Symbols.tsx","webpack://Recharts/./node_modules/d3-shape/src/symbol.js","webpack://Recharts/./src/component/DefaultLegendContent.tsx","webpack://Recharts/./src/util/payload/getUniqPayload.ts","webpack://Recharts/./src/component/Legend.tsx","webpack://Recharts/./src/component/DefaultTooltipContent.tsx","webpack://Recharts/./src/util/tooltip/translate.ts","webpack://Recharts/./src/component/TooltipBoundingBox.tsx","webpack://Recharts/./src/util/Global.ts","webpack://Recharts/./src/component/Tooltip.tsx","webpack://Recharts/./src/component/ResponsiveContainer.tsx","webpack://Recharts/./src/component/Cell.tsx","webpack://Recharts/./src/util/DOMUtils.ts","webpack://Recharts/./src/util/ReduceCSSCalc.ts","webpack://Recharts/./src/component/Text.tsx","webpack://Recharts/./node_modules/d3-scale/src/init.js","webpack://Recharts/./node_modules/internmap/src/index.js","webpack://Recharts/./node_modules/d3-scale/src/ordinal.js","webpack://Recharts/./node_modules/d3-scale/src/band.js","webpack://Recharts/./node_modules/d3-array/src/range.js","webpack://Recharts/./node_modules/d3-array/src/ticks.js","webpack://Recharts/./node_modules/d3-array/src/ascending.js","webpack://Recharts/./node_modules/d3-array/src/descending.js","webpack://Recharts/./node_modules/d3-array/src/bisector.js","webpack://Recharts/./node_modules/d3-array/src/number.js","webpack://Recharts/./node_modules/d3-array/src/bisect.js","webpack://Recharts/./node_modules/d3-color/src/define.js","webpack://Recharts/./node_modules/d3-color/src/color.js","webpack://Recharts/./node_modules/d3-interpolate/src/basis.js","webpack://Recharts/./node_modules/d3-interpolate/src/constant.js","webpack://Recharts/./node_modules/d3-interpolate/src/color.js","webpack://Recharts/./node_modules/d3-interpolate/src/rgb.js","webpack://Recharts/./node_modules/d3-interpolate/src/basisClosed.js","webpack://Recharts/./node_modules/d3-interpolate/src/array.js","webpack://Recharts/./node_modules/d3-interpolate/src/date.js","webpack://Recharts/./node_modules/d3-interpolate/src/number.js","webpack://Recharts/./node_modules/d3-interpolate/src/object.js","webpack://Recharts/./node_modules/d3-interpolate/src/string.js","webpack://Recharts/./node_modules/d3-interpolate/src/numberArray.js","webpack://Recharts/./node_modules/d3-interpolate/src/value.js","webpack://Recharts/./node_modules/d3-interpolate/src/round.js","webpack://Recharts/./node_modules/d3-scale/src/number.js","webpack://Recharts/./node_modules/d3-scale/src/continuous.js","webpack://Recharts/./node_modules/d3-scale/src/constant.js","webpack://Recharts/./node_modules/d3-format/src/formatSpecifier.js","webpack://Recharts/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://Recharts/./node_modules/d3-format/src/formatDecimal.js","webpack://Recharts/./node_modules/d3-format/src/exponent.js","webpack://Recharts/./node_modules/d3-format/src/formatRounded.js","webpack://Recharts/./node_modules/d3-format/src/formatTypes.js","webpack://Recharts/./node_modules/d3-format/src/identity.js","webpack://Recharts/./node_modules/d3-format/src/locale.js","webpack://Recharts/./node_modules/d3-format/src/defaultLocale.js","webpack://Recharts/./node_modules/d3-format/src/formatGroup.js","webpack://Recharts/./node_modules/d3-format/src/formatNumerals.js","webpack://Recharts/./node_modules/d3-format/src/formatTrim.js","webpack://Recharts/./node_modules/d3-scale/src/tickFormat.js","webpack://Recharts/./node_modules/d3-format/src/precisionPrefix.js","webpack://Recharts/./node_modules/d3-format/src/precisionRound.js","webpack://Recharts/./node_modules/d3-format/src/precisionFixed.js","webpack://Recharts/./node_modules/d3-scale/src/linear.js","webpack://Recharts/./node_modules/d3-scale/src/identity.js","webpack://Recharts/./node_modules/d3-scale/src/nice.js","webpack://Recharts/./node_modules/d3-scale/src/log.js","webpack://Recharts/./node_modules/d3-scale/src/symlog.js","webpack://Recharts/./node_modules/d3-scale/src/pow.js","webpack://Recharts/./node_modules/d3-scale/src/radial.js","webpack://Recharts/./node_modules/d3-array/src/max.js","webpack://Recharts/./node_modules/d3-array/src/min.js","webpack://Recharts/./node_modules/d3-array/src/sort.js","webpack://Recharts/./node_modules/d3-array/src/quickselect.js","webpack://Recharts/./node_modules/d3-array/src/quantile.js","webpack://Recharts/./node_modules/d3-scale/src/quantile.js","webpack://Recharts/./node_modules/d3-scale/src/quantize.js","webpack://Recharts/./node_modules/d3-scale/src/threshold.js","webpack://Recharts/./node_modules/d3-time/src/duration.js","webpack://Recharts/./node_modules/d3-time/src/interval.js","webpack://Recharts/./node_modules/d3-time/src/millisecond.js","webpack://Recharts/./node_modules/d3-time/src/second.js","webpack://Recharts/./node_modules/d3-time/src/minute.js","webpack://Recharts/./node_modules/d3-time/src/hour.js","webpack://Recharts/./node_modules/d3-time/src/day.js","webpack://Recharts/./node_modules/d3-time/src/week.js","webpack://Recharts/./node_modules/d3-time/src/month.js","webpack://Recharts/./node_modules/d3-time/src/year.js","webpack://Recharts/./node_modules/d3-time/src/ticks.js","webpack://Recharts/./node_modules/d3-time-format/src/locale.js","webpack://Recharts/./node_modules/d3-time-format/src/defaultLocale.js","webpack://Recharts/./node_modules/d3-scale/src/time.js","webpack://Recharts/./node_modules/d3-scale/src/utcTime.js","webpack://Recharts/./node_modules/d3-scale/src/sequential.js","webpack://Recharts/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://Recharts/./node_modules/d3-scale/src/diverging.js","webpack://Recharts/./node_modules/d3-interpolate/src/piecewise.js","webpack://Recharts/./node_modules/d3-shape/src/offset/none.js","webpack://Recharts/./node_modules/d3-shape/src/array.js","webpack://Recharts/./node_modules/d3-shape/src/order/none.js","webpack://Recharts/./node_modules/d3-shape/src/stack.js","webpack://Recharts/./node_modules/recharts-scale/es6/util/utils.js","webpack://Recharts/./node_modules/recharts-scale/es6/util/arithmetic.js","webpack://Recharts/./node_modules/recharts-scale/es6/getNiceTickValues.js","webpack://Recharts/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js","webpack://Recharts/./src/cartesian/ErrorBar.tsx","webpack://Recharts/./src/util/getLegendProps.ts","webpack://Recharts/./src/util/ChartUtils.ts","webpack://Recharts/./node_modules/d3-shape/src/offset/expand.js","webpack://Recharts/./node_modules/d3-shape/src/offset/silhouette.js","webpack://Recharts/./node_modules/d3-shape/src/offset/wiggle.js","webpack://Recharts/./src/util/PolarUtils.ts","webpack://Recharts/./src/component/Label.tsx","webpack://Recharts/./src/component/LabelList.tsx","webpack://Recharts/./src/component/Customized.tsx","webpack://Recharts/./src/shape/Sector.tsx","webpack://Recharts/./node_modules/d3-shape/src/noop.js","webpack://Recharts/./node_modules/d3-shape/src/curve/basis.js","webpack://Recharts/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://Recharts/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://Recharts/./node_modules/d3-shape/src/curve/bump.js","webpack://Recharts/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://Recharts/./node_modules/d3-shape/src/curve/linear.js","webpack://Recharts/./node_modules/d3-shape/src/curve/monotone.js","webpack://Recharts/./node_modules/d3-shape/src/curve/natural.js","webpack://Recharts/./node_modules/d3-shape/src/curve/step.js","webpack://Recharts/./node_modules/d3-shape/src/point.js","webpack://Recharts/./node_modules/d3-shape/src/line.js","webpack://Recharts/./node_modules/d3-shape/src/area.js","webpack://Recharts/./src/shape/Curve.tsx","webpack://Recharts/./node_modules/fast-equals/dist/esm/index.mjs","webpack://Recharts/./node_modules/react-smooth/es6/setRafTimeout.js","webpack://Recharts/./node_modules/react-smooth/es6/AnimateManager.js","webpack://Recharts/./node_modules/react-smooth/es6/util.js","webpack://Recharts/./node_modules/react-smooth/es6/easing.js","webpack://Recharts/./node_modules/react-smooth/es6/configUpdate.js","webpack://Recharts/./node_modules/react-smooth/es6/Animate.js","webpack://Recharts/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://Recharts/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://Recharts/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://Recharts/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://Recharts/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://Recharts/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://Recharts/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://Recharts/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://Recharts/./node_modules/react-transition-group/esm/config.js","webpack://Recharts/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://Recharts/./node_modules/react-transition-group/esm/Transition.js","webpack://Recharts/./node_modules/react-smooth/es6/AnimateGroupChild.js","webpack://Recharts/./node_modules/react-smooth/es6/AnimateGroup.js","webpack://Recharts/./node_modules/react-smooth/es6/index.js","webpack://Recharts/./src/shape/Rectangle.tsx","webpack://Recharts/./src/shape/Polygon.tsx","webpack://Recharts/./src/shape/Dot.tsx","webpack://Recharts/./src/shape/Cross.tsx","webpack://Recharts/./src/polar/PolarGrid.tsx","webpack://Recharts/./src/polar/PolarRadiusAxis.tsx","webpack://Recharts/./src/polar/PolarAngleAxis.tsx","webpack://Recharts/./src/shape/Trapezoid.tsx","webpack://Recharts/./src/util/ActiveShapeUtils.tsx","webpack://Recharts/./src/polar/Pie.tsx","webpack://Recharts/./src/polar/Radar.tsx","webpack://Recharts/./src/util/RadialBarUtils.tsx","webpack://Recharts/./src/polar/RadialBar.tsx","webpack://Recharts/./src/util/CssPrefixUtils.ts","webpack://Recharts/./src/cartesian/Brush.tsx","webpack://Recharts/./src/util/IfOverflowMatches.ts","webpack://Recharts/./src/util/BarUtils.tsx","webpack://Recharts/./src/cartesian/Bar.tsx","webpack://Recharts/./src/util/CartesianUtils.ts","webpack://Recharts/./src/util/calculateViewBox.ts","webpack://Recharts/./src/context/chartLayoutContext.tsx","webpack://Recharts/./src/cartesian/ReferenceLine.tsx","webpack://Recharts/./src/cartesian/ReferenceDot.tsx","webpack://Recharts/./src/cartesian/ReferenceArea.tsx","webpack://Recharts/./src/util/getEveryNthWithCondition.ts","webpack://Recharts/./src/util/TickUtils.ts","webpack://Recharts/./src/cartesian/getTicks.ts","webpack://Recharts/./src/cartesian/getEquidistantTicks.ts","webpack://Recharts/./src/cartesian/CartesianAxis.tsx","webpack://Recharts/./src/cartesian/CartesianGrid.tsx","webpack://Recharts/./src/cartesian/Line.tsx","webpack://Recharts/./src/cartesian/Area.tsx","webpack://Recharts/./src/cartesian/ZAxis.tsx","webpack://Recharts/./src/util/ScatterUtils.tsx","webpack://Recharts/./src/cartesian/Scatter.tsx","webpack://Recharts/./src/cartesian/XAxis.tsx","webpack://Recharts/./src/cartesian/YAxis.tsx","webpack://Recharts/./src/util/DetectReferenceElementsDomain.ts","webpack://Recharts/./src/util/Events.ts","webpack://Recharts/./src/chart/AccessibilityManager.ts","webpack://Recharts/./src/util/cursor/getRadialCursorPoints.ts","webpack://Recharts/./src/util/cursor/getCursorPoints.ts","webpack://Recharts/./src/component/Cursor.tsx","webpack://Recharts/./src/util/cursor/getCursorRectangle.ts","webpack://Recharts/./src/chart/generateCategoricalChart.tsx","webpack://Recharts/./src/util/isDomainSpecifiedByUser.ts","webpack://Recharts/./src/chart/LineChart.tsx","webpack://Recharts/./src/chart/BarChart.tsx","webpack://Recharts/./src/chart/PieChart.tsx","webpack://Recharts/./src/util/Constants.ts","webpack://Recharts/./src/chart/Treemap.tsx","webpack://Recharts/./src/chart/Sankey.tsx","webpack://Recharts/./src/chart/RadarChart.tsx","webpack://Recharts/./src/chart/ScatterChart.tsx","webpack://Recharts/./src/chart/AreaChart.tsx","webpack://Recharts/./src/chart/RadialBarChart.tsx","webpack://Recharts/./src/chart/ComposedChart.tsx","webpack://Recharts/./src/chart/SunburstChart.tsx","webpack://Recharts/./src/util/FunnelUtils.tsx","webpack://Recharts/./src/numberAxis/Funnel.tsx","webpack://Recharts/./src/chart/FunnelChart.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"prop-types\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"prop-types\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Recharts\"] = factory(require(\"react\"), require(\"prop-types\"), require(\"react-dom\"));\n\telse\n\t\troot[\"Recharts\"] = factory(root[\"React\"], root[\"PropTypes\"], root[\"ReactDOM\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__741__, __WEBPACK_EXTERNAL_MODULE__9660__, __WEBPACK_EXTERNAL_MODULE__4020__) => {\nreturn ","/*! 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 <M8ch88l@gmail.com>\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","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 `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\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 baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\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 * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\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 assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\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 copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\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 Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\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    genTag = '[object GeneratorFunction]',\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    symbolTag = '[object Symbol]',\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 supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\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 getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\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 getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\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","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\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 `_.keysIn` 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 baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\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 `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n  var result,\n      index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var current = iteratee(array[index]);\n    if (current !== undefined) {\n      result = result === undefined ? current : (result + current);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseSum;\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","var castPath = require('./_castPath'),\n    last = require('./last'),\n    parent = require('./_parent'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\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 Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\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    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\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 clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\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","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\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 isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\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","var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\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 baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * 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 getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\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 overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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 arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\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 and inherited 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 getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\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","/** 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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\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    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 * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\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","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\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 baseGet = require('./_baseGet'),\n    baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\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","module.exports = require('./head');\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 * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n  return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\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 baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\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 map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\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    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\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 set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\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","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\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 baseExtremum = require('./_baseExtremum'),\n    baseGt = require('./_baseGt'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n    : undefined;\n}\n\nmodule.exports = maxBy;\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","var baseExtremum = require('./_baseExtremum'),\n    baseIteratee = require('./_baseIteratee'),\n    baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n  return (array && array.length)\n    ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n    : undefined;\n}\n\nmodule.exports = minBy;\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 arrayMap = require('./_arrayMap'),\n    baseClone = require('./_baseClone'),\n    baseUnset = require('./_baseUnset'),\n    castPath = require('./_castPath'),\n    copyObject = require('./_copyObject'),\n    customOmitClone = require('./_customOmitClone'),\n    flatRest = require('./_flatRest'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nmodule.exports = omit;\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 baseIteratee = require('./_baseIteratee'),\n    baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n  return (array && array.length)\n    ? baseSum(array, baseIteratee(iteratee, 2))\n    : 0;\n}\n\nmodule.exports = sumBy;\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","/**\n * @license React\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'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\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","module.exports = __WEBPACK_EXTERNAL_MODULE__9660__;","module.exports = __WEBPACK_EXTERNAL_MODULE__741__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4020__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import isString from 'lodash/isString';\nimport isNan from 'lodash/isNaN';\nimport get from 'lodash/get';\nimport lodashIsNumber from 'lodash/isNumber';\n\nexport const mathSign = (value: number) => {\n  if (value === 0) {\n    return 0;\n  }\n  if (value > 0) {\n    return 1;\n  }\n\n  return -1;\n};\n\nexport const isPercent = (value: string | number): value is `${number}%` =>\n  isString(value) && value.indexOf('%') === value.length - 1;\n\nexport const isNumber = (value: unknown): value is number => lodashIsNumber(value) && !isNan(value);\n\nexport const isNumOrStr = (value: unknown): value is number | string => isNumber(value as number) || isString(value);\n\nlet idCounter = 0;\nexport const uniqueId = (prefix?: string) => {\n  const id = ++idCounter;\n\n  return `${prefix || ''}${id}`;\n};\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 */\nexport const getPercentValue = (percent: number | string, totalValue: number, defaultValue = 0, validate = false) => {\n  if (!isNumber(percent as number) && !isString(percent)) {\n    return defaultValue;\n  }\n\n  let value: number;\n\n  if (isPercent(percent)) {\n    const index = percent.indexOf('%');\n    value = (totalValue * parseFloat((percent as string).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};\n\nexport const getAnyElementOfObject = (obj: any) => {\n  if (!obj) {\n    return null;\n  }\n\n  const keys = Object.keys(obj);\n\n  if (keys && keys.length) {\n    return obj[keys[0]];\n  }\n\n  return null;\n};\n\nexport const hasDuplicate = (ary: Array<any>) => {\n  if (!Array.isArray(ary)) {\n    return false;\n  }\n\n  const len = ary.length;\n  const cache: Record<string, boolean> = {};\n\n  for (let 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};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport const interpolateNumber = (numberA: number, numberB: number) => {\n  if (isNumber(numberA) && isNumber(numberB)) {\n    return (t: number) => numberA + t * (numberB - numberA);\n  }\n\n  return () => numberB;\n};\n\nexport function findEntryInArray<T>(\n  ary: Array<T>,\n  specifiedKey: number | string | ((entry: T) => unknown),\n  specifiedValue: unknown,\n) {\n  if (!ary || !ary.length) {\n    return null;\n  }\n\n  return ary.find(\n    entry =>\n      entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : get(entry, specifiedKey)) === specifiedValue,\n  );\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 */\nexport const getLinearRegression = (data: Array<{ cx?: number; cy?: number }>) => {\n  if (!data || !data.length) {\n    return null;\n  }\n\n  const len = data.length;\n  let xsum = 0;\n  let ysum = 0;\n  let xysum = 0;\n  let xxsum = 0;\n  let xmin = Infinity;\n  let xmax = -Infinity;\n  let xcurrent = 0;\n  let ycurrent = 0;\n\n  for (let i = 0; i < len; i++) {\n    xcurrent = data[i].cx || 0;\n    ycurrent = data[i].cy || 0;\n\n    xsum += xcurrent;\n    ysum += ycurrent;\n    xysum += xcurrent * ycurrent;\n    xxsum += xcurrent * xcurrent;\n    xmin = Math.min(xmin, xcurrent);\n    xmax = Math.max(xmax, xcurrent);\n  }\n\n  const a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n\n  return {\n    xmin,\n    xmax,\n    a,\n    b: (ysum - a * xsum) / len,\n  };\n};\n","export function shallowEqual(a: any, b: any) {\n  /* eslint-disable no-restricted-syntax */\n  for (const key in a) {\n    if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n      return false;\n    }\n  }\n  for (const key in b) {\n    if ({}.hasOwnProperty.call(b, key) && !{}.hasOwnProperty.call(a, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n","import {\n  AnimationEvent,\n  AriaAttributes,\n  ClipboardEvent,\n  Component,\n  CompositionEvent,\n  DragEvent,\n  FocusEvent,\n  FormEvent,\n  FunctionComponent,\n  isValidElement,\n  KeyboardEvent,\n  MouseEvent,\n  PointerEvent,\n  ReactElement,\n  ReactNode,\n  SVGProps,\n  SyntheticEvent,\n  TouchEvent,\n  TransitionEvent,\n  UIEvent,\n  WheelEvent,\n  JSX,\n} from 'react';\nimport isObject from 'lodash/isObject';\nimport { ScaleContinuousNumeric as D3ScaleContinuousNumeric } from 'victory-vendor/d3-scale';\nimport type { Props as XAxisProps } from '../cartesian/XAxis';\nimport type { Props as YAxisProps } from '../cartesian/YAxis';\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */\nexport type StackOffsetType = 'sign' | 'expand' | 'none' | 'wiggle' | 'silhouette' | 'positive';\nexport type LayoutType = 'horizontal' | 'vertical' | 'centric' | 'radial';\nexport type PolarLayoutType = 'radial' | 'centric';\nexport type AxisType = 'xAxis' | 'yAxis' | 'zAxis' | 'angleAxis' | 'radiusAxis';\nexport type DataKey<T> = string | number | ((obj: T) => any);\nexport type PresentationAttributesWithProps<P, T> = AriaAttributes &\n  DOMAttributesWithProps<P, T> &\n  Omit<SVGProps<T>, keyof DOMAttributesWithProps<P, T>>;\nexport type PresentationAttributesAdaptChildEvent<P, T> = AriaAttributes &\n  DOMAttributesAdaptChildEvent<P, T> &\n  Omit<SVGProps<T>, keyof DOMAttributesAdaptChildEvent<P, T>>;\n\nexport type SymbolType = 'circle' | 'cross' | 'diamond' | 'square' | 'star' | 'triangle' | 'wye';\nexport type LegendType =\n  | 'plainline'\n  | 'line'\n  | 'square'\n  | 'rect'\n  | 'circle'\n  | 'cross'\n  | 'diamond'\n  | 'star'\n  | 'triangle'\n  | 'wye'\n  | 'none';\nexport type TooltipType = 'none';\n\nexport type AllowInDimension = {\n  x?: boolean;\n  y?: boolean;\n};\n\nexport interface Coordinate {\n  x: number;\n  y: number;\n}\n\nexport interface ChartCoordinate extends Coordinate {\n  xAxis?: any;\n  yAxis?: any;\n  width?: any;\n  height?: any;\n  offset?: ChartOffset;\n  angle?: number;\n  radius?: number;\n  cx?: number;\n  cy?: number;\n  startAngle?: number;\n  endAngle?: number;\n  innerRadius?: number;\n  outerRadius?: number;\n}\n\nexport type ScaleType =\n  | 'auto'\n  | 'linear'\n  | 'pow'\n  | 'sqrt'\n  | 'log'\n  | 'identity'\n  | 'time'\n  | 'band'\n  | 'point'\n  | 'ordinal'\n  | 'quantile'\n  | 'quantize'\n  | 'utc'\n  | 'sequential'\n  | 'threshold';\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\ntype EventHandler<P, E extends SyntheticEvent<any>> = {\n  bivarianceHack(props: P, event: E): void;\n}['bivarianceHack'];\n\ntype ReactEventHandler<P, T = Element> = EventHandler<P, SyntheticEvent<T>>;\ntype ClipboardEventHandler<P, T = Element> = EventHandler<P, ClipboardEvent<T>>;\ntype CompositionEventHandler<P, T = Element> = EventHandler<P, CompositionEvent<T>>;\ntype DragEventHandler<P, T = Element> = EventHandler<P, DragEvent<T>>;\ntype FocusEventHandler<P, T = Element> = EventHandler<P, FocusEvent<T>>;\ntype FormEventHandler<P, T = Element> = EventHandler<P, FormEvent<T>>;\ntype KeyboardEventHandler<P, T = Element> = EventHandler<P, KeyboardEvent<T>>;\ntype MouseEventHandler<P, T = Element> = EventHandler<P, MouseEvent<T>>;\ntype TouchEventHandler<P, T = Element> = EventHandler<P, TouchEvent<T>>;\ntype PointerEventHandler<P, T = Element> = EventHandler<P, PointerEvent<T>>;\ntype UIEventHandler<P, T = Element> = EventHandler<P, UIEvent<T>>;\ntype WheelEventHandler<P, T = Element> = EventHandler<P, WheelEvent<T>>;\ntype AnimationEventHandler<P, T = Element> = EventHandler<P, AnimationEvent<T>>;\ntype TransitionEventHandler<P, T = Element> = EventHandler<P, TransitionEvent<T>>;\n\nexport interface DOMAttributesWithProps<P, T> {\n  children?: ReactNode;\n  dangerouslySetInnerHTML?: {\n    __html: string;\n  };\n\n  // Clipboard Events\n  onCopy?: ClipboardEventHandler<P, T>;\n  onCopyCapture?: ClipboardEventHandler<P, T>;\n  onCut?: ClipboardEventHandler<P, T>;\n  onCutCapture?: ClipboardEventHandler<P, T>;\n  onPaste?: ClipboardEventHandler<P, T>;\n  onPasteCapture?: ClipboardEventHandler<P, T>;\n\n  // Composition Events\n  onCompositionEnd?: CompositionEventHandler<P, T>;\n  onCompositionEndCapture?: CompositionEventHandler<P, T>;\n  onCompositionStart?: CompositionEventHandler<P, T>;\n  onCompositionStartCapture?: CompositionEventHandler<P, T>;\n  onCompositionUpdate?: CompositionEventHandler<P, T>;\n  onCompositionUpdateCapture?: CompositionEventHandler<P, T>;\n\n  // Focus Events\n  onFocus?: FocusEventHandler<P, T>;\n  onFocusCapture?: FocusEventHandler<P, T>;\n  onBlur?: FocusEventHandler<P, T>;\n  onBlurCapture?: FocusEventHandler<P, T>;\n\n  // Form Events\n  onChange?: FormEventHandler<P, T>;\n  onChangeCapture?: FormEventHandler<P, T>;\n  onBeforeInput?: FormEventHandler<P, T>;\n  onBeforeInputCapture?: FormEventHandler<P, T>;\n  onInput?: FormEventHandler<P, T>;\n  onInputCapture?: FormEventHandler<P, T>;\n  onReset?: FormEventHandler<P, T>;\n  onResetCapture?: FormEventHandler<P, T>;\n  onSubmit?: FormEventHandler<P, T>;\n  onSubmitCapture?: FormEventHandler<P, T>;\n  onInvalid?: FormEventHandler<P, T>;\n  onInvalidCapture?: FormEventHandler<P, T>;\n\n  // Image Events\n  onLoad?: ReactEventHandler<P, T>;\n  onLoadCapture?: ReactEventHandler<P, T>;\n  onError?: ReactEventHandler<P, T>; // also a Media Event\n  onErrorCapture?: ReactEventHandler<P, T>; // also a Media Event\n\n  // Keyboard Events\n  onKeyDown?: KeyboardEventHandler<P, T>;\n  onKeyDownCapture?: KeyboardEventHandler<P, T>;\n  onKeyPress?: KeyboardEventHandler<P, T>;\n  onKeyPressCapture?: KeyboardEventHandler<P, T>;\n  onKeyUp?: KeyboardEventHandler<P, T>;\n  onKeyUpCapture?: KeyboardEventHandler<P, T>;\n\n  // Media Events\n  onAbort?: ReactEventHandler<P, T>;\n  onAbortCapture?: ReactEventHandler<P, T>;\n  onCanPlay?: ReactEventHandler<P, T>;\n  onCanPlayCapture?: ReactEventHandler<P, T>;\n  onCanPlayThrough?: ReactEventHandler<P, T>;\n  onCanPlayThroughCapture?: ReactEventHandler<P, T>;\n  onDurationChange?: ReactEventHandler<P, T>;\n  onDurationChangeCapture?: ReactEventHandler<P, T>;\n  onEmptied?: ReactEventHandler<P, T>;\n  onEmptiedCapture?: ReactEventHandler<P, T>;\n  onEncrypted?: ReactEventHandler<P, T>;\n  onEncryptedCapture?: ReactEventHandler<P, T>;\n  onEnded?: ReactEventHandler<P, T>;\n  onEndedCapture?: ReactEventHandler<P, T>;\n  onLoadedData?: ReactEventHandler<P, T>;\n  onLoadedDataCapture?: ReactEventHandler<P, T>;\n  onLoadedMetadata?: ReactEventHandler<P, T>;\n  onLoadedMetadataCapture?: ReactEventHandler<P, T>;\n  onLoadStart?: ReactEventHandler<P, T>;\n  onLoadStartCapture?: ReactEventHandler<P, T>;\n  onPause?: ReactEventHandler<P, T>;\n  onPauseCapture?: ReactEventHandler<P, T>;\n  onPlay?: ReactEventHandler<P, T>;\n  onPlayCapture?: ReactEventHandler<P, T>;\n  onPlaying?: ReactEventHandler<P, T>;\n  onPlayingCapture?: ReactEventHandler<P, T>;\n  onProgress?: ReactEventHandler<P, T>;\n  onProgressCapture?: ReactEventHandler<P, T>;\n  onRateChange?: ReactEventHandler<P, T>;\n  onRateChangeCapture?: ReactEventHandler<P, T>;\n  onSeeked?: ReactEventHandler<P, T>;\n  onSeekedCapture?: ReactEventHandler<P, T>;\n  onSeeking?: ReactEventHandler<P, T>;\n  onSeekingCapture?: ReactEventHandler<P, T>;\n  onStalled?: ReactEventHandler<P, T>;\n  onStalledCapture?: ReactEventHandler<P, T>;\n  onSuspend?: ReactEventHandler<P, T>;\n  onSuspendCapture?: ReactEventHandler<P, T>;\n  onTimeUpdate?: ReactEventHandler<P, T>;\n  onTimeUpdateCapture?: ReactEventHandler<P, T>;\n  onVolumeChange?: ReactEventHandler<P, T>;\n  onVolumeChangeCapture?: ReactEventHandler<P, T>;\n  onWaiting?: ReactEventHandler<P, T>;\n  onWaitingCapture?: ReactEventHandler<P, T>;\n\n  // MouseEvents\n  onAuxClick?: MouseEventHandler<P, T>;\n  onAuxClickCapture?: MouseEventHandler<P, T>;\n  onClick?: MouseEventHandler<P, T>;\n  onClickCapture?: MouseEventHandler<P, T>;\n  onContextMenu?: MouseEventHandler<P, T>;\n  onContextMenuCapture?: MouseEventHandler<P, T>;\n  onDoubleClick?: MouseEventHandler<P, T>;\n  onDoubleClickCapture?: MouseEventHandler<P, T>;\n  onDrag?: DragEventHandler<P, T>;\n  onDragCapture?: DragEventHandler<P, T>;\n  onDragEnd?: DragEventHandler<P, T>;\n  onDragEndCapture?: DragEventHandler<P, T>;\n  onDragEnter?: DragEventHandler<P, T>;\n  onDragEnterCapture?: DragEventHandler<P, T>;\n  onDragExit?: DragEventHandler<P, T>;\n  onDragExitCapture?: DragEventHandler<P, T>;\n  onDragLeave?: DragEventHandler<P, T>;\n  onDragLeaveCapture?: DragEventHandler<P, T>;\n  onDragOver?: DragEventHandler<P, T>;\n  onDragOverCapture?: DragEventHandler<P, T>;\n  onDragStart?: DragEventHandler<P, T>;\n  onDragStartCapture?: DragEventHandler<P, T>;\n  onDrop?: DragEventHandler<P, T>;\n  onDropCapture?: DragEventHandler<P, T>;\n  onMouseDown?: MouseEventHandler<P, T>;\n  onMouseDownCapture?: MouseEventHandler<P, T>;\n  onMouseEnter?: MouseEventHandler<P, T>;\n  onMouseLeave?: MouseEventHandler<P, T>;\n  onMouseMove?: MouseEventHandler<P, T>;\n  onMouseMoveCapture?: MouseEventHandler<P, T>;\n  onMouseOut?: MouseEventHandler<P, T>;\n  onMouseOutCapture?: MouseEventHandler<P, T>;\n  onMouseOver?: MouseEventHandler<P, T>;\n  onMouseOverCapture?: MouseEventHandler<P, T>;\n  onMouseUp?: MouseEventHandler<P, T>;\n  onMouseUpCapture?: MouseEventHandler<P, T>;\n\n  // Selection Events\n  onSelect?: ReactEventHandler<P, T>;\n  onSelectCapture?: ReactEventHandler<P, T>;\n\n  // Touch Events\n  onTouchCancel?: TouchEventHandler<P, T>;\n  onTouchCancelCapture?: TouchEventHandler<P, T>;\n  onTouchEnd?: TouchEventHandler<P, T>;\n  onTouchEndCapture?: TouchEventHandler<P, T>;\n  onTouchMove?: TouchEventHandler<P, T>;\n  onTouchMoveCapture?: TouchEventHandler<P, T>;\n  onTouchStart?: TouchEventHandler<P, T>;\n  onTouchStartCapture?: TouchEventHandler<P, T>;\n\n  // Pointer Events\n  onPointerDown?: PointerEventHandler<P, T>;\n  onPointerDownCapture?: PointerEventHandler<P, T>;\n  onPointerMove?: PointerEventHandler<P, T>;\n  onPointerMoveCapture?: PointerEventHandler<P, T>;\n  onPointerUp?: PointerEventHandler<P, T>;\n  onPointerUpCapture?: PointerEventHandler<P, T>;\n  onPointerCancel?: PointerEventHandler<P, T>;\n  onPointerCancelCapture?: PointerEventHandler<P, T>;\n  onPointerEnter?: PointerEventHandler<P, T>;\n  onPointerEnterCapture?: PointerEventHandler<P, T>;\n  onPointerLeave?: PointerEventHandler<P, T>;\n  onPointerLeaveCapture?: PointerEventHandler<P, T>;\n  onPointerOver?: PointerEventHandler<P, T>;\n  onPointerOverCapture?: PointerEventHandler<P, T>;\n  onPointerOut?: PointerEventHandler<P, T>;\n  onPointerOutCapture?: PointerEventHandler<P, T>;\n  onGotPointerCapture?: PointerEventHandler<P, T>;\n  onGotPointerCaptureCapture?: PointerEventHandler<P, T>;\n  onLostPointerCapture?: PointerEventHandler<P, T>;\n  onLostPointerCaptureCapture?: PointerEventHandler<P, T>;\n\n  // UI Events\n  onScroll?: UIEventHandler<P, T>;\n  onScrollCapture?: UIEventHandler<P, T>;\n\n  // Wheel Events\n  onWheel?: WheelEventHandler<P, T>;\n  onWheelCapture?: WheelEventHandler<P, T>;\n\n  // Animation Events\n  onAnimationStart?: AnimationEventHandler<P, T>;\n  onAnimationStartCapture?: AnimationEventHandler<P, T>;\n  onAnimationEnd?: AnimationEventHandler<P, T>;\n  onAnimationEndCapture?: AnimationEventHandler<P, T>;\n  onAnimationIteration?: AnimationEventHandler<P, T>;\n  onAnimationIterationCapture?: AnimationEventHandler<P, T>;\n\n  // Transition Events\n  onTransitionEnd?: TransitionEventHandler<P, T>;\n  onTransitionEndCapture?: TransitionEventHandler<P, T>;\n}\n\ntype AdaptChildEventHandler<P, E extends SyntheticEvent<any>> = {\n  bivarianceHack(data: P, index: number, event: E): void;\n}['bivarianceHack'];\n\ntype AdaptChildReactEventHandler<P, T = Element> = AdaptChildEventHandler<P, SyntheticEvent<T>>;\ntype AdaptChildClipboardEventHandler<P, T = Element> = AdaptChildEventHandler<P, ClipboardEvent<T>>;\ntype AdaptChildCompositionEventHandler<P, T = Element> = AdaptChildEventHandler<P, CompositionEvent<T>>;\ntype AdaptChildDragEventHandler<P, T = Element> = AdaptChildEventHandler<P, DragEvent<T>>;\ntype AdaptChildFocusEventHandler<P, T = Element> = AdaptChildEventHandler<P, FocusEvent<T>>;\ntype AdaptChildFormEventHandler<P, T = Element> = AdaptChildEventHandler<P, FormEvent<T>>;\ntype AdaptChildKeyboardEventHandler<P, T = Element> = AdaptChildEventHandler<P, KeyboardEvent<T>>;\ntype AdaptChildMouseEventHandler<P, T = Element> = AdaptChildEventHandler<P, MouseEvent<T>>;\ntype AdaptChildTouchEventHandler<P, T = Element> = AdaptChildEventHandler<P, TouchEvent<T>>;\ntype AdaptChildPointerEventHandler<P, T = Element> = AdaptChildEventHandler<P, PointerEvent<T>>;\ntype AdaptChildUIEventHandler<P, T = Element> = AdaptChildEventHandler<P, UIEvent<T>>;\ntype AdaptChildWheelEventHandler<P, T = Element> = AdaptChildEventHandler<P, WheelEvent<T>>;\ntype AdaptChildAnimationEventHandler<P, T = Element> = AdaptChildEventHandler<P, AnimationEvent<T>>;\ntype AdaptChildTransitionEventHandler<P, T = Element> = AdaptChildEventHandler<P, TransitionEvent<T>>;\n\nexport type DOMAttributesAdaptChildEvent<P, T> = {\n  children?: ReactNode;\n  dangerouslySetInnerHTML?: {\n    __html: string;\n  };\n\n  // Clipboard Events\n  onCopy?: AdaptChildClipboardEventHandler<P, T>;\n  onCopyCapture?: AdaptChildClipboardEventHandler<P, T>;\n  onCut?: AdaptChildClipboardEventHandler<P, T>;\n  onCutCapture?: AdaptChildClipboardEventHandler<P, T>;\n  onPaste?: AdaptChildClipboardEventHandler<P, T>;\n  onPasteCapture?: AdaptChildClipboardEventHandler<P, T>;\n\n  // Composition Events\n  onCompositionEnd?: AdaptChildCompositionEventHandler<P, T>;\n  onCompositionEndCapture?: AdaptChildCompositionEventHandler<P, T>;\n  onCompositionStart?: AdaptChildCompositionEventHandler<P, T>;\n  onCompositionStartCapture?: AdaptChildCompositionEventHandler<P, T>;\n  onCompositionUpdate?: AdaptChildCompositionEventHandler<P, T>;\n  onCompositionUpdateCapture?: AdaptChildCompositionEventHandler<P, T>;\n\n  // Focus Events\n  onFocus?: AdaptChildFocusEventHandler<P, T>;\n  onFocusCapture?: AdaptChildFocusEventHandler<P, T>;\n  onBlur?: AdaptChildFocusEventHandler<P, T>;\n  onBlurCapture?: AdaptChildFocusEventHandler<P, T>;\n\n  // Form Events\n  onChange?: AdaptChildFormEventHandler<P, T>;\n  onChangeCapture?: AdaptChildFormEventHandler<P, T>;\n  onBeforeInput?: AdaptChildFormEventHandler<P, T>;\n  onBeforeInputCapture?: AdaptChildFormEventHandler<P, T>;\n  onInput?: AdaptChildFormEventHandler<P, T>;\n  onInputCapture?: AdaptChildFormEventHandler<P, T>;\n  onReset?: AdaptChildFormEventHandler<P, T>;\n  onResetCapture?: AdaptChildFormEventHandler<P, T>;\n  onSubmit?: AdaptChildFormEventHandler<P, T>;\n  onSubmitCapture?: AdaptChildFormEventHandler<P, T>;\n  onInvalid?: AdaptChildFormEventHandler<P, T>;\n  onInvalidCapture?: AdaptChildFormEventHandler<P, T>;\n\n  // Image Events\n  onLoad?: AdaptChildReactEventHandler<P, T>;\n  onLoadCapture?: AdaptChildReactEventHandler<P, T>;\n  onError?: AdaptChildReactEventHandler<P, T>; // also a Media Event\n  onErrorCapture?: AdaptChildReactEventHandler<P, T>; // also a Media Event\n\n  // Keyboard Events\n  onKeyDown?: AdaptChildKeyboardEventHandler<P, T>;\n  onKeyDownCapture?: AdaptChildKeyboardEventHandler<P, T>;\n  onKeyPress?: AdaptChildKeyboardEventHandler<P, T>;\n  onKeyPressCapture?: AdaptChildKeyboardEventHandler<P, T>;\n  onKeyUp?: AdaptChildKeyboardEventHandler<P, T>;\n  onKeyUpCapture?: AdaptChildKeyboardEventHandler<P, T>;\n\n  // Media Events\n  onAbort?: AdaptChildReactEventHandler<P, T>;\n  onAbortCapture?: AdaptChildReactEventHandler<P, T>;\n  onCanPlay?: AdaptChildReactEventHandler<P, T>;\n  onCanPlayCapture?: AdaptChildReactEventHandler<P, T>;\n  onCanPlayThrough?: AdaptChildReactEventHandler<P, T>;\n  onCanPlayThroughCapture?: AdaptChildReactEventHandler<P, T>;\n  onDurationChange?: AdaptChildReactEventHandler<P, T>;\n  onDurationChangeCapture?: AdaptChildReactEventHandler<P, T>;\n  onEmptied?: AdaptChildReactEventHandler<P, T>;\n  onEmptiedCapture?: AdaptChildReactEventHandler<P, T>;\n  onEncrypted?: AdaptChildReactEventHandler<P, T>;\n  onEncryptedCapture?: AdaptChildReactEventHandler<P, T>;\n  onEnded?: AdaptChildReactEventHandler<P, T>;\n  onEndedCapture?: AdaptChildReactEventHandler<P, T>;\n  onLoadedData?: AdaptChildReactEventHandler<P, T>;\n  onLoadedDataCapture?: AdaptChildReactEventHandler<P, T>;\n  onLoadedMetadata?: AdaptChildReactEventHandler<P, T>;\n  onLoadedMetadataCapture?: AdaptChildReactEventHandler<P, T>;\n  onLoadStart?: AdaptChildReactEventHandler<P, T>;\n  onLoadStartCapture?: AdaptChildReactEventHandler<P, T>;\n  onPause?: AdaptChildReactEventHandler<P, T>;\n  onPauseCapture?: AdaptChildReactEventHandler<P, T>;\n  onPlay?: AdaptChildReactEventHandler<P, T>;\n  onPlayCapture?: AdaptChildReactEventHandler<P, T>;\n  onPlaying?: AdaptChildReactEventHandler<P, T>;\n  onPlayingCapture?: AdaptChildReactEventHandler<P, T>;\n  onProgress?: AdaptChildReactEventHandler<P, T>;\n  onProgressCapture?: AdaptChildReactEventHandler<P, T>;\n  onRateChange?: AdaptChildReactEventHandler<P, T>;\n  onRateChangeCapture?: AdaptChildReactEventHandler<P, T>;\n  onSeeked?: AdaptChildReactEventHandler<P, T>;\n  onSeekedCapture?: AdaptChildReactEventHandler<P, T>;\n  onSeeking?: AdaptChildReactEventHandler<P, T>;\n  onSeekingCapture?: AdaptChildReactEventHandler<P, T>;\n  onStalled?: AdaptChildReactEventHandler<P, T>;\n  onStalledCapture?: AdaptChildReactEventHandler<P, T>;\n  onSuspend?: AdaptChildReactEventHandler<P, T>;\n  onSuspendCapture?: AdaptChildReactEventHandler<P, T>;\n  onTimeUpdate?: AdaptChildReactEventHandler<P, T>;\n  onTimeUpdateCapture?: AdaptChildReactEventHandler<P, T>;\n  onVolumeChange?: AdaptChildReactEventHandler<P, T>;\n  onVolumeChangeCapture?: AdaptChildReactEventHandler<P, T>;\n  onWaiting?: AdaptChildReactEventHandler<P, T>;\n  onWaitingCapture?: AdaptChildReactEventHandler<P, T>;\n\n  // MouseEvents\n  onAuxClick?: AdaptChildMouseEventHandler<P, T>;\n  onAuxClickCapture?: AdaptChildMouseEventHandler<P, T>;\n  onClick?: AdaptChildMouseEventHandler<P, T>;\n  onClickCapture?: AdaptChildMouseEventHandler<P, T>;\n  onContextMenu?: AdaptChildMouseEventHandler<P, T>;\n  onContextMenuCapture?: AdaptChildMouseEventHandler<P, T>;\n  onDoubleClick?: AdaptChildMouseEventHandler<P, T>;\n  onDoubleClickCapture?: AdaptChildMouseEventHandler<P, T>;\n  onDrag?: AdaptChildDragEventHandler<P, T>;\n  onDragCapture?: AdaptChildDragEventHandler<P, T>;\n  onDragEnd?: AdaptChildDragEventHandler<P, T>;\n  onDragEndCapture?: AdaptChildDragEventHandler<P, T>;\n  onDragEnter?: AdaptChildDragEventHandler<P, T>;\n  onDragEnterCapture?: AdaptChildDragEventHandler<P, T>;\n  onDragExit?: AdaptChildDragEventHandler<P, T>;\n  onDragExitCapture?: AdaptChildDragEventHandler<P, T>;\n  onDragLeave?: AdaptChildDragEventHandler<P, T>;\n  onDragLeaveCapture?: AdaptChildDragEventHandler<P, T>;\n  onDragOver?: AdaptChildDragEventHandler<P, T>;\n  onDragOverCapture?: AdaptChildDragEventHandler<P, T>;\n  onDragStart?: AdaptChildDragEventHandler<P, T>;\n  onDragStartCapture?: AdaptChildDragEventHandler<P, T>;\n  onDrop?: AdaptChildDragEventHandler<P, T>;\n  onDropCapture?: AdaptChildDragEventHandler<P, T>;\n  onMouseDown?: AdaptChildMouseEventHandler<P, T>;\n  onMouseDownCapture?: AdaptChildMouseEventHandler<P, T>;\n  onMouseEnter?: AdaptChildMouseEventHandler<P, T>;\n  onMouseLeave?: AdaptChildMouseEventHandler<P, T>;\n  onMouseMove?: AdaptChildMouseEventHandler<P, T>;\n  onMouseMoveCapture?: AdaptChildMouseEventHandler<P, T>;\n  onMouseOut?: AdaptChildMouseEventHandler<P, T>;\n  onMouseOutCapture?: AdaptChildMouseEventHandler<P, T>;\n  onMouseOver?: AdaptChildMouseEventHandler<P, T>;\n  onMouseOverCapture?: AdaptChildMouseEventHandler<P, T>;\n  onMouseUp?: AdaptChildMouseEventHandler<P, T>;\n  onMouseUpCapture?: AdaptChildMouseEventHandler<P, T>;\n\n  // Selection Events\n  onSelect?: AdaptChildReactEventHandler<P, T>;\n  onSelectCapture?: AdaptChildReactEventHandler<P, T>;\n\n  // Touch Events\n  onTouchCancel?: AdaptChildTouchEventHandler<P, T>;\n  onTouchCancelCapture?: AdaptChildTouchEventHandler<P, T>;\n  onTouchEnd?: AdaptChildTouchEventHandler<P, T>;\n  onTouchEndCapture?: AdaptChildTouchEventHandler<P, T>;\n  onTouchMove?: AdaptChildTouchEventHandler<P, T>;\n  onTouchMoveCapture?: AdaptChildTouchEventHandler<P, T>;\n  onTouchStart?: AdaptChildTouchEventHandler<P, T>;\n  onTouchStartCapture?: AdaptChildTouchEventHandler<P, T>;\n\n  // Pointer Events\n  onPointerDown?: AdaptChildPointerEventHandler<P, T>;\n  onPointerDownCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerMove?: AdaptChildPointerEventHandler<P, T>;\n  onPointerMoveCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerUp?: AdaptChildPointerEventHandler<P, T>;\n  onPointerUpCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerCancel?: AdaptChildPointerEventHandler<P, T>;\n  onPointerCancelCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerEnter?: AdaptChildPointerEventHandler<P, T>;\n  onPointerEnterCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerLeave?: AdaptChildPointerEventHandler<P, T>;\n  onPointerLeaveCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerOver?: AdaptChildPointerEventHandler<P, T>;\n  onPointerOverCapture?: AdaptChildPointerEventHandler<P, T>;\n  onPointerOut?: AdaptChildPointerEventHandler<P, T>;\n  onPointerOutCapture?: AdaptChildPointerEventHandler<P, T>;\n  onGotPointerCapture?: AdaptChildPointerEventHandler<P, T>;\n  onGotPointerCaptureCapture?: AdaptChildPointerEventHandler<P, T>;\n  onLostPointerCapture?: AdaptChildPointerEventHandler<P, T>;\n  onLostPointerCaptureCapture?: AdaptChildPointerEventHandler<P, T>;\n\n  // UI Events\n  onScroll?: AdaptChildUIEventHandler<P, T>;\n  onScrollCapture?: AdaptChildUIEventHandler<P, T>;\n\n  // Wheel Events\n  onWheel?: AdaptChildWheelEventHandler<P, T>;\n  onWheelCapture?: AdaptChildWheelEventHandler<P, T>;\n\n  // Animation Events\n  onAnimationStart?: AdaptChildAnimationEventHandler<P, T>;\n  onAnimationStartCapture?: AdaptChildAnimationEventHandler<P, T>;\n  onAnimationEnd?: AdaptChildAnimationEventHandler<P, T>;\n  onAnimationEndCapture?: AdaptChildAnimationEventHandler<P, T>;\n  onAnimationIteration?: AdaptChildAnimationEventHandler<P, T>;\n  onAnimationIterationCapture?: AdaptChildAnimationEventHandler<P, T>;\n\n  // Transition Events\n  onTransitionEnd?: AdaptChildTransitionEventHandler<P, T>;\n  onTransitionEndCapture?: AdaptChildTransitionEventHandler<P, T>;\n};\n\nconst SVGContainerPropKeys = ['viewBox', 'children'];\nexport const SVGElementPropKeys = [\n  'aria-activedescendant',\n  'aria-atomic',\n  'aria-autocomplete',\n  'aria-busy',\n  'aria-checked',\n  'aria-colcount',\n  'aria-colindex',\n  'aria-colspan',\n  'aria-controls',\n  'aria-current',\n  'aria-describedby',\n  'aria-details',\n  'aria-disabled',\n  'aria-errormessage',\n  'aria-expanded',\n  'aria-flowto',\n  'aria-haspopup',\n  'aria-hidden',\n  'aria-invalid',\n  'aria-keyshortcuts',\n  'aria-label',\n  'aria-labelledby',\n  'aria-level',\n  'aria-live',\n  'aria-modal',\n  'aria-multiline',\n  'aria-multiselectable',\n  'aria-orientation',\n  'aria-owns',\n  'aria-placeholder',\n  'aria-posinset',\n  'aria-pressed',\n  'aria-readonly',\n  'aria-relevant',\n  'aria-required',\n  'aria-roledescription',\n  'aria-rowcount',\n  'aria-rowindex',\n  'aria-rowspan',\n  'aria-selected',\n  'aria-setsize',\n  'aria-sort',\n  'aria-valuemax',\n  'aria-valuemin',\n  'aria-valuenow',\n  'aria-valuetext',\n  'className',\n  'color',\n  'height',\n  'id',\n  'lang',\n  'max',\n  'media',\n  'method',\n  'min',\n  'name',\n  'style',\n  /*\n   * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n   * that can use it and it conflicts with the recharts prop 'type'\n   * https://github.com/recharts/recharts/pull/3327\n   * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n   */\n  // 'type',\n  'target',\n  'width',\n  'role',\n  'tabIndex',\n  'accentHeight',\n  'accumulate',\n  'additive',\n  'alignmentBaseline',\n  'allowReorder',\n  'alphabetic',\n  'amplitude',\n  'arabicForm',\n  'ascent',\n  'attributeName',\n  'attributeType',\n  'autoReverse',\n  'azimuth',\n  'baseFrequency',\n  'baselineShift',\n  'baseProfile',\n  'bbox',\n  'begin',\n  'bias',\n  'by',\n  'calcMode',\n  'capHeight',\n  'clip',\n  'clipPath',\n  'clipPathUnits',\n  'clipRule',\n  'colorInterpolation',\n  'colorInterpolationFilters',\n  'colorProfile',\n  'colorRendering',\n  'contentScriptType',\n  'contentStyleType',\n  'cursor',\n  'cx',\n  'cy',\n  'd',\n  'decelerate',\n  'descent',\n  'diffuseConstant',\n  'direction',\n  'display',\n  'divisor',\n  'dominantBaseline',\n  'dur',\n  'dx',\n  'dy',\n  'edgeMode',\n  'elevation',\n  'enableBackground',\n  'end',\n  'exponent',\n  'externalResourcesRequired',\n  'fill',\n  'fillOpacity',\n  'fillRule',\n  'filter',\n  'filterRes',\n  'filterUnits',\n  'floodColor',\n  'floodOpacity',\n  'focusable',\n  'fontFamily',\n  'fontSize',\n  'fontSizeAdjust',\n  'fontStretch',\n  'fontStyle',\n  'fontVariant',\n  'fontWeight',\n  'format',\n  'from',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyphName',\n  'glyphOrientationHorizontal',\n  'glyphOrientationVertical',\n  'glyphRef',\n  'gradientTransform',\n  'gradientUnits',\n  'hanging',\n  'horizAdvX',\n  'horizOriginX',\n  'href',\n  'ideographic',\n  'imageRendering',\n  'in2',\n  'in',\n  'intercept',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'k',\n  'kernelMatrix',\n  'kernelUnitLength',\n  'kerning',\n  'keyPoints',\n  'keySplines',\n  'keyTimes',\n  'lengthAdjust',\n  'letterSpacing',\n  'lightingColor',\n  'limitingConeAngle',\n  'local',\n  'markerEnd',\n  'markerHeight',\n  'markerMid',\n  'markerStart',\n  'markerUnits',\n  'markerWidth',\n  'mask',\n  'maskContentUnits',\n  'maskUnits',\n  'mathematical',\n  'mode',\n  'numOctaves',\n  'offset',\n  'opacity',\n  'operator',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'overlinePosition',\n  'overlineThickness',\n  'paintOrder',\n  'panose1',\n  'pathLength',\n  'patternContentUnits',\n  'patternTransform',\n  'patternUnits',\n  'pointerEvents',\n  'pointsAtX',\n  'pointsAtY',\n  'pointsAtZ',\n  'preserveAlpha',\n  'preserveAspectRatio',\n  'primitiveUnits',\n  'r',\n  'radius',\n  'refX',\n  'refY',\n  'renderingIntent',\n  'repeatCount',\n  'repeatDur',\n  'requiredExtensions',\n  'requiredFeatures',\n  'restart',\n  'result',\n  'rotate',\n  'rx',\n  'ry',\n  'seed',\n  'shapeRendering',\n  'slope',\n  'spacing',\n  'specularConstant',\n  'specularExponent',\n  'speed',\n  'spreadMethod',\n  'startOffset',\n  'stdDeviation',\n  'stemh',\n  'stemv',\n  'stitchTiles',\n  'stopColor',\n  'stopOpacity',\n  'strikethroughPosition',\n  'strikethroughThickness',\n  'string',\n  'stroke',\n  'strokeDasharray',\n  'strokeDashoffset',\n  'strokeLinecap',\n  'strokeLinejoin',\n  'strokeMiterlimit',\n  'strokeOpacity',\n  'strokeWidth',\n  'surfaceScale',\n  'systemLanguage',\n  'tableValues',\n  'targetX',\n  'targetY',\n  'textAnchor',\n  'textDecoration',\n  'textLength',\n  'textRendering',\n  'to',\n  'transform',\n  'u1',\n  'u2',\n  'underlinePosition',\n  'underlineThickness',\n  'unicode',\n  'unicodeBidi',\n  'unicodeRange',\n  'unitsPerEm',\n  'vAlphabetic',\n  'values',\n  'vectorEffect',\n  'version',\n  'vertAdvY',\n  'vertOriginX',\n  'vertOriginY',\n  'vHanging',\n  'vIdeographic',\n  'viewTarget',\n  'visibility',\n  'vMathematical',\n  'widths',\n  'wordSpacing',\n  'writingMode',\n  'x1',\n  'x2',\n  'x',\n  'xChannelSelector',\n  'xHeight',\n  'xlinkActuate',\n  'xlinkArcrole',\n  'xlinkHref',\n  'xlinkRole',\n  'xlinkShow',\n  'xlinkTitle',\n  'xlinkType',\n  'xmlBase',\n  'xmlLang',\n  'xmlns',\n  'xmlnsXlink',\n  'xmlSpace',\n  'y1',\n  'y2',\n  'y',\n  'yChannelSelector',\n  'z',\n  'zoomAndPan',\n  'ref',\n  'key',\n  'angle',\n];\n\nconst PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\nexport type FilteredSvgElementType = 'svg' | 'polyline' | 'polygon';\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport const FilteredElementKeyMap: Record<FilteredSvgElementType, string[]> = {\n  svg: SVGContainerPropKeys,\n  polygon: PolyElementKeys,\n  polyline: PolyElementKeys,\n};\n\nexport const EventKeys = [\n  'dangerouslySetInnerHTML',\n  'onCopy',\n  'onCopyCapture',\n  'onCut',\n  'onCutCapture',\n  'onPaste',\n  'onPasteCapture',\n  'onCompositionEnd',\n  'onCompositionEndCapture',\n  'onCompositionStart',\n  'onCompositionStartCapture',\n  'onCompositionUpdate',\n  'onCompositionUpdateCapture',\n  'onFocus',\n  'onFocusCapture',\n  'onBlur',\n  'onBlurCapture',\n  'onChange',\n  'onChangeCapture',\n  'onBeforeInput',\n  'onBeforeInputCapture',\n  'onInput',\n  'onInputCapture',\n  'onReset',\n  'onResetCapture',\n  'onSubmit',\n  'onSubmitCapture',\n  'onInvalid',\n  'onInvalidCapture',\n  'onLoad',\n  'onLoadCapture',\n  'onError',\n  'onErrorCapture',\n  'onKeyDown',\n  'onKeyDownCapture',\n  'onKeyPress',\n  'onKeyPressCapture',\n  'onKeyUp',\n  'onKeyUpCapture',\n  'onAbort',\n  'onAbortCapture',\n  'onCanPlay',\n  'onCanPlayCapture',\n  'onCanPlayThrough',\n  'onCanPlayThroughCapture',\n  'onDurationChange',\n  'onDurationChangeCapture',\n  'onEmptied',\n  'onEmptiedCapture',\n  'onEncrypted',\n  'onEncryptedCapture',\n  'onEnded',\n  'onEndedCapture',\n  'onLoadedData',\n  'onLoadedDataCapture',\n  'onLoadedMetadata',\n  'onLoadedMetadataCapture',\n  'onLoadStart',\n  'onLoadStartCapture',\n  'onPause',\n  'onPauseCapture',\n  'onPlay',\n  'onPlayCapture',\n  'onPlaying',\n  'onPlayingCapture',\n  'onProgress',\n  'onProgressCapture',\n  'onRateChange',\n  'onRateChangeCapture',\n  'onSeeked',\n  'onSeekedCapture',\n  'onSeeking',\n  'onSeekingCapture',\n  'onStalled',\n  'onStalledCapture',\n  'onSuspend',\n  'onSuspendCapture',\n  'onTimeUpdate',\n  'onTimeUpdateCapture',\n  'onVolumeChange',\n  'onVolumeChangeCapture',\n  'onWaiting',\n  'onWaitingCapture',\n  'onAuxClick',\n  'onAuxClickCapture',\n  'onClick',\n  'onClickCapture',\n  'onContextMenu',\n  'onContextMenuCapture',\n  'onDoubleClick',\n  'onDoubleClickCapture',\n  'onDrag',\n  'onDragCapture',\n  'onDragEnd',\n  'onDragEndCapture',\n  'onDragEnter',\n  'onDragEnterCapture',\n  'onDragExit',\n  'onDragExitCapture',\n  'onDragLeave',\n  'onDragLeaveCapture',\n  'onDragOver',\n  'onDragOverCapture',\n  'onDragStart',\n  'onDragStartCapture',\n  'onDrop',\n  'onDropCapture',\n  'onMouseDown',\n  'onMouseDownCapture',\n  'onMouseEnter',\n  'onMouseLeave',\n  'onMouseMove',\n  'onMouseMoveCapture',\n  'onMouseOut',\n  'onMouseOutCapture',\n  'onMouseOver',\n  'onMouseOverCapture',\n  'onMouseUp',\n  'onMouseUpCapture',\n  'onSelect',\n  'onSelectCapture',\n  'onTouchCancel',\n  'onTouchCancelCapture',\n  'onTouchEnd',\n  'onTouchEndCapture',\n  'onTouchMove',\n  'onTouchMoveCapture',\n  'onTouchStart',\n  'onTouchStartCapture',\n  'onPointerDown',\n  'onPointerDownCapture',\n  'onPointerMove',\n  'onPointerMoveCapture',\n  'onPointerUp',\n  'onPointerUpCapture',\n  'onPointerCancel',\n  'onPointerCancelCapture',\n  'onPointerEnter',\n  'onPointerEnterCapture',\n  'onPointerLeave',\n  'onPointerLeaveCapture',\n  'onPointerOver',\n  'onPointerOverCapture',\n  'onPointerOut',\n  'onPointerOutCapture',\n  'onGotPointerCapture',\n  'onGotPointerCaptureCapture',\n  'onLostPointerCapture',\n  'onLostPointerCaptureCapture',\n  'onScroll',\n  'onScrollCapture',\n  'onWheel',\n  'onWheelCapture',\n  'onAnimationStart',\n  'onAnimationStartCapture',\n  'onAnimationEnd',\n  'onAnimationEndCapture',\n  'onAnimationIteration',\n  'onAnimationIterationCapture',\n  'onTransitionEnd',\n  'onTransitionEndCapture',\n];\n\n/** The type of easing function to use for animations */\nexport type AnimationTiming = 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear';\n/** Specifies the duration of animation, the unit of this option is ms. */\nexport type AnimationDuration = number;\n\n/** the offset of a chart, which define the blank space all around */\nexport interface ChartOffset {\n  top?: number;\n  bottom?: number;\n  left?: number;\n  right?: number;\n  width?: number;\n  height?: number;\n  brushBottom?: number;\n}\n\nexport interface Padding {\n  top?: number;\n  bottom?: number;\n  left?: number;\n  right?: number;\n}\n\nexport interface GeometrySector {\n  cx?: number;\n  cy?: number;\n  innerRadius?: number;\n  outerRadius?: number;\n  startAngle?: number;\n  endAngle?: number;\n  cornerRadius?: number;\n  forceCornerRadius?: boolean;\n  cornerIsExternal?: boolean;\n}\n\nexport type D3Scale<T> = D3ScaleContinuousNumeric<T, number>;\n\nexport type AxisDomainItem = string | number | Function | 'auto' | 'dataMin' | 'dataMax';\n\n/**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */\nexport type AxisDomain =\n  | string[]\n  | number[]\n  | [AxisDomainItem, AxisDomainItem]\n  | (([dataMin, dataMax]: [number, number], allowDataOverflow: boolean) => [number, number]);\n\n/**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */\nexport type NumberDomain = [min: number, max: number];\n\nexport type CategoricalDomain = (number | string | Date)[];\n\n/** The props definition of base axis */\nexport interface BaseAxisProps {\n  /** The type of axis */\n  type?: 'number' | 'category';\n  /** The key of data displayed in the axis */\n  dataKey?: DataKey<any>;\n  /** Whether or not display the axis */\n  hide?: boolean;\n  /** The scale type or functor of scale */\n  scale?: ScaleType | Function;\n  /** The option for tick */\n  tick?: SVGProps<SVGTextElement> | ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | boolean;\n  /** The count of ticks */\n  tickCount?: number;\n  /** The option for axisLine */\n  axisLine?: boolean | SVGProps<SVGLineElement>;\n  /** The option for tickLine */\n  tickLine?: boolean | SVGProps<SVGTextElement>;\n  /** The size of tick line */\n  tickSize?: number;\n  /** The formatter function of tick */\n  tickFormatter?: (value: any, index: number) => string;\n  /**\n   * When domain of the axis is specified and the type of the axis is 'number',\n   * if allowDataOverflow is set to be false,\n   * the domain will be adjusted when the minimum value of data is smaller than domain[0] or\n   * the maximum value of data is greater than domain[1] so that the axis displays all data values.\n   * If set to true, graphic elements (line, area, bars) will be clipped to conform to the specified domain.\n   */\n  allowDataOverflow?: boolean;\n  /**\n   * Allow the axis has duplicated categories or not when the type of axis is \"category\".\n   */\n  allowDuplicatedCategory?: boolean;\n  /**\n   * Allow the ticks of axis to be decimals or not.\n   */\n  allowDecimals?: boolean;\n  /** The domain of scale in this axis */\n  domain?: AxisDomain;\n  /** Consider hidden elements when computing the domain (defaults to false) */\n  includeHidden?: boolean;\n  /** The name of data displayed in the axis */\n  name?: string;\n  /** The unit of data displayed in the axis */\n  unit?: string | number;\n  /** The type of axis */\n  axisType?: AxisType;\n  range?: Array<number>;\n  /** axis react component */\n  AxisComp?: any;\n  /** Needed to allow usage of the label prop on the X and Y axis */\n  label?: string | number | ReactElement | object;\n  /** The HTML element's class name */\n  className?: string;\n}\n\n/** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */\nexport type AxisInterval = number | 'preserveStart' | 'preserveEnd' | 'preserveStartEnd' | 'equidistantPreserveStart';\n\nexport interface TickItem {\n  value?: any;\n  coordinate: number;\n  index?: number;\n}\n\nexport interface CartesianTickItem extends TickItem {\n  tickCoord?: number;\n  tickSize?: number;\n  isShow?: boolean;\n}\n\nexport interface Margin {\n  top?: number;\n  right?: number;\n  bottom?: number;\n  left?: number;\n}\n\nexport interface CartesianViewBox {\n  x?: number;\n  y?: number;\n  width?: number;\n  height?: number;\n}\n\nexport interface PolarViewBox {\n  cx?: number;\n  cy?: number;\n  innerRadius?: number;\n  outerRadius?: number;\n  startAngle?: number;\n  endAngle?: number;\n  clockWise?: boolean;\n}\n\nexport type ViewBox = CartesianViewBox | PolarViewBox;\n\ntype RecordString<T> = Record<string, T>;\n\ntype AdaptEventHandlersReturn = RecordString<(e?: Event) => any> | RecordString<(e: Event) => void> | null;\n\nexport const adaptEventHandlers = (\n  props: RecordString<any> | Component | FunctionComponent | boolean,\n  newHandler?: (e?: Event) => any,\n): AdaptEventHandlersReturn => {\n  if (!props || typeof props === 'function' || typeof props === 'boolean') {\n    return null;\n  }\n\n  let inputProps = props as RecordString<any>;\n\n  if (isValidElement(props)) {\n    inputProps = props.props as RecordString<any>;\n  }\n\n  if (!isObject(inputProps)) {\n    return null;\n  }\n\n  const out: RecordString<(e: Event) => void> = {};\n\n  Object.keys(inputProps).forEach(key => {\n    if (EventKeys.includes(key)) {\n      out[key] = newHandler || ((e: Event) => inputProps[key](inputProps, e));\n    }\n  });\n\n  return out;\n};\n\nconst getEventHandlerOfChild =\n  (originalHandler: Function, data: any, index: number) =>\n  (e: Event): null => {\n    originalHandler(data, index, e);\n\n    return null;\n  };\n\nexport const adaptEventsOfChild = (\n  props: RecordString<any>,\n  data: any,\n  index: number,\n): RecordString<(e?: Event) => any> | null => {\n  if (!isObject(props) || typeof props !== 'object') {\n    return null;\n  }\n\n  let out: RecordString<(e: Event) => void> | null = null;\n\n  Object.keys(props).forEach((key: string) => {\n    const item = (props as any)[key];\n\n    if (EventKeys.includes(key) && typeof item === 'function') {\n      if (!out) out = {};\n\n      out[key] = getEventHandlerOfChild(item, data, index);\n    }\n  });\n\n  return out;\n};\n\nexport type TooltipEventType = 'axis' | 'item';\n\nexport interface CategoricalChartOptions {\n  chartName?: string;\n  GraphicalChild?: any;\n  defaultTooltipEventType?: TooltipEventType;\n  validateTooltipEventTypes?: ReadonlyArray<TooltipEventType>;\n  axisComponents?: BaseAxisProps[];\n  legendContent?: 'children';\n  formatAxisMap?: any;\n  defaultProps?: any;\n}\n\nexport interface TreemapNode {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n  depth: number;\n  index: number;\n  children?: any;\n  name: string;\n  value: number;\n  [k: string]: any;\n}\n\nexport interface SankeyNode {\n  x: number;\n  y: number;\n  dx: number;\n  dy: number;\n  depth: number;\n  value: number;\n}\nexport interface SankeyLink {\n  target: number;\n  source: number;\n  value: number;\n  sy: number;\n  dy: number;\n  ty: number;\n}\n\nexport type Size = { width: number; height: number };\n\nexport type ActiveShape<PropsType = Record<string, any>, ElementType = SVGElement> =\n  | ReactElement<SVGProps<ElementType>>\n  | ((props: PropsType) => ReactElement<SVGProps<ElementType>>)\n  | ((props: unknown) => JSX.Element)\n  | SVGProps<ElementType>\n  | boolean;\n\nexport type XAxisMap = {\n  [axisId: string]: XAxisProps;\n};\n\nexport type YAxisMap = {\n  [axisId: string]: YAxisProps;\n};\n","import get from 'lodash/get';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\n\nimport React, { Children, Component, FunctionComponent, isValidElement, ReactNode } from 'react';\nimport { isFragment } from 'react-is';\nimport { DotProps } from '..';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredSvgElementType, FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nimport { AreaDot } from '../cartesian/Area';\nimport { LineDot } from '../cartesian/Line';\n\nconst REACT_BROWSER_EVENT_MAP: Record<string, string> = {\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  contextmenu: 'onContextMenu',\n  dblclick: 'onDoubleClick',\n};\n\nexport const SCALE_TYPES = [\n  'auto',\n  'linear',\n  'pow',\n  'sqrt',\n  'log',\n  'identity',\n  'time',\n  'band',\n  'point',\n  'ordinal',\n  'quantile',\n  'quantize',\n  'utc',\n  'sequential',\n  'threshold',\n];\n\nexport const LEGEND_TYPES = [\n  'plainline',\n  'line',\n  'square',\n  'rect',\n  'circle',\n  'cross',\n  'diamond',\n  'star',\n  'triangle',\n  'wye',\n  'none',\n];\n\nexport const TOOLTIP_TYPES = ['none'];\n\n/**\n * Get the display name of a component\n * @param  {Object} Comp Specified Component\n * @return {String}      Display name of Component\n */\nexport const getDisplayName = (Comp: React.ComponentType | string) => {\n  if (typeof Comp === 'string') {\n    return Comp;\n  }\n  if (!Comp) {\n    return '';\n  }\n  return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nlet lastChildren: ReactNode | null = null;\nlet lastResult: ReactNode[] | null = null;\n\nexport const toArray = <T extends ReactNode>(children: T | T[]): T[] => {\n  if (children === lastChildren && Array.isArray(lastResult)) {\n    return lastResult as T[];\n  }\n  let result: T[] = [];\n  Children.forEach(children, child => {\n    if (isNil(child)) return;\n    if (isFragment(child)) {\n      result = result.concat(toArray(child.props.children));\n    } else {\n      // @ts-expect-error this could still be Iterable<ReactNode> and TS does not like that\n      result.push(child);\n    }\n  });\n  lastResult = result;\n  lastChildren = children;\n  return result;\n};\n\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */\nexport function findAllByType<\n  ComponentType extends React.ComponentType,\n  DetailedElement = React.DetailedReactHTMLElement<React.ComponentProps<ComponentType>, HTMLElement>,\n>(children: ReactNode, type: ComponentType | ComponentType[]): DetailedElement[] {\n  const result: DetailedElement[] = [];\n  let types: string[] = [];\n\n  if (Array.isArray(type)) {\n    types = type.map(t => getDisplayName(t));\n  } else {\n    types = [getDisplayName(type)];\n  }\n\n  toArray(children).forEach(child => {\n    const childType = get(child, 'type.displayName') || get(child, 'type.name');\n    if (types.indexOf(childType) !== -1) {\n      result.push(child as DetailedElement);\n    }\n  });\n\n  return result;\n}\n\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */\nexport function findChildByType<ComponentType extends React.ComponentType>(\n  children: ReactNode[],\n  type: ComponentType | ComponentType[],\n) {\n  const result = findAllByType(children, type);\n\n  return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport const withoutType = (children: ReactNode, type: string | string[]) => {\n  const newChildren: ReactNode[] = [];\n  let types: string[];\n\n  if (Array.isArray(type)) {\n    types = type.map(t => getDisplayName(t));\n  } else {\n    types = [getDisplayName(type)];\n  }\n\n  toArray(children).forEach(child => {\n    const displayName = get(child, 'type.displayName');\n\n    if (displayName && types.indexOf(displayName) !== -1) {\n      return;\n    }\n    newChildren.push(child);\n  });\n\n  return newChildren;\n};\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 */\nexport const validateWidthHeight = (el: any): boolean => {\n  if (!el || !el.props) {\n    return false;\n  }\n  const { width, height } = el.props;\n\n  if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n    return false;\n  }\n\n  return true;\n};\n\nconst SVG_TAGS: string[] = [\n  'a',\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animate',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'circle',\n  'clipPath',\n  'color-profile',\n  'cursor',\n  'defs',\n  'desc',\n  'ellipse',\n  'feBlend',\n  'feColormatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'filter',\n  'font',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-url',\n  'foreignObject',\n  'g',\n  'glyph',\n  'glyphRef',\n  'hkern',\n  'image',\n  'line',\n  'lineGradient',\n  'marker',\n  'mask',\n  'metadata',\n  'missing-glyph',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialGradient',\n  'rect',\n  'script',\n  'set',\n  'stop',\n  'style',\n  'svg',\n  'switch',\n  'symbol',\n  'text',\n  'textPath',\n  'title',\n  'tref',\n  'tspan',\n  'use',\n  'view',\n  'vkern',\n];\n\nconst isSvgElement = (child: any) => child && child.type && isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n\nexport const hasClipDot = (dot: LineDot | AreaDot): dot is DotProps =>\n  dot && typeof dot === 'object' && 'clipDot' in dot;\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport const isValidSpreadableProp = (\n  property: unknown,\n  key: string,\n  includeEvents?: boolean,\n  svgElementType?: FilteredSvgElementType,\n) => {\n  /**\n   * If the svg element type is explicitly included, check against the filtered element key map\n   * to determine if there are attributes that should only exist on that element type.\n   * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n   */\n  const matchingElementTypeKeys = FilteredElementKeyMap?.[svgElementType] ?? [];\n\n  return (\n    (!isFunction(property) &&\n      ((svgElementType && matchingElementTypeKeys.includes(key)) || SVGElementPropKeys.includes(key))) ||\n    (includeEvents && EventKeys.includes(key))\n  );\n};\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 */\nexport const filterSvgElements = (children: React.ReactElement[]): React.ReactElement[] => {\n  const svgElements = [] as React.ReactElement[];\n\n  toArray(children).forEach((entry: React.ReactElement) => {\n    if (isSvgElement(entry)) {\n      svgElements.push(entry);\n    }\n  });\n\n  return svgElements;\n};\n\nexport const filterProps = (\n  props: Record<string, any> | Component | FunctionComponent | boolean | unknown,\n  includeEvents: boolean,\n  svgElementType?: FilteredSvgElementType,\n) => {\n  if (!props || typeof props === 'function' || typeof props === 'boolean') {\n    return null;\n  }\n\n  let inputProps = props as Record<string, any>;\n\n  if (isValidElement(props)) {\n    inputProps = props.props as Record<string, any>;\n  }\n\n  if (!isObject(inputProps)) {\n    return null;\n  }\n\n  const out: Record<string, any> = {};\n\n  /**\n   * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n   * Items filtered out are as follows:\n   *   - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n   *   - props that are SVG attributes but don't matched the passed svgElementType\n   *   - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n   */\n  Object.keys(inputProps).forEach(key => {\n    if (isValidSpreadableProp(inputProps?.[key], key, includeEvents, svgElementType)) {\n      out[key] = inputProps[key];\n    }\n  });\n\n  return out;\n};\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 */\nexport const isChildrenEqual = (nextChildren: React.ReactElement[], prevChildren: React.ReactElement[]): boolean => {\n  if (nextChildren === prevChildren) {\n    return true;\n  }\n\n  const count = Children.count(nextChildren);\n  if (count !== Children.count(prevChildren)) {\n    return false;\n  }\n\n  if (count === 0) {\n    return true;\n  }\n  if (count === 1) {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return isSingleChildEqual(\n      Array.isArray(nextChildren) ? nextChildren[0] : nextChildren,\n      Array.isArray(prevChildren) ? prevChildren[0] : prevChildren,\n    );\n  }\n\n  for (let i = 0; i < count; i++) {\n    const nextChild: any = nextChildren[i];\n    const prevChild: any = prevChildren[i];\n\n    if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n      if (!isChildrenEqual(nextChild, prevChild)) {\n        return false;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    } else if (!isSingleChildEqual(nextChild, prevChild)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nexport const isSingleChildEqual = (nextChild: React.ReactElement, prevChild: React.ReactElement): boolean => {\n  if (isNil(nextChild) && isNil(prevChild)) {\n    return true;\n  }\n  if (!isNil(nextChild) && !isNil(prevChild)) {\n    const { children: nextChildren, ...nextProps } = nextChild.props || {};\n    const { children: prevChildren, ...prevProps } = prevChild.props || {};\n\n    if (nextChildren && prevChildren) {\n      return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n    }\n    if (!nextChildren && !prevChildren) {\n      return shallowEqual(nextProps, prevProps);\n    }\n\n    return false;\n  }\n\n  return false;\n};\n\nexport const renderByOrder = (children: React.ReactElement[], renderMap: any) => {\n  const elements: React.ReactElement[] = [];\n  const record: Record<string, boolean> = {};\n\n  toArray(children).forEach((child, index) => {\n    if (isSvgElement(child)) {\n      elements.push(child);\n    } else if (child) {\n      const displayName = getDisplayName(child.type);\n      const { handler, once } = renderMap[displayName] || {};\n\n      if (handler && (!once || !record[displayName])) {\n        const results = handler(child, displayName, index);\n\n        elements.push(results);\n        record[displayName] = true;\n      }\n    }\n  });\n\n  return elements;\n};\n\nexport const getReactEventByType = (e: { type?: string }): string => {\n  const 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};\n\nexport const parseChildIndex = (child: any, children: any[]) => {\n  return toArray(children).indexOf(child);\n};\n","/**\n * @fileOverview Surface\n */\nimport React, { ReactNode, CSSProperties, SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface SurfaceProps {\n  width: number;\n  height: number;\n  viewBox?: {\n    x?: number;\n    y?: number;\n    width?: number;\n    height?: number;\n  };\n  className?: string;\n  style?: CSSProperties;\n  children?: ReactNode;\n  title?: string;\n  desc?: string;\n}\n\nexport type Props = Omit<SVGProps<SVGSVGElement>, 'viewBox'> & SurfaceProps;\n\nexport function Surface(props: Props) {\n  const { children, width, height, viewBox, className, style, title, desc, ...others } = props;\n  const svgView = viewBox || { width, height, x: 0, y: 0 };\n  const layerClass = clsx('recharts-surface', className);\n\n  return (\n    <svg\n      {...filterProps(others, true, 'svg')}\n      className={layerClass}\n      width={width}\n      height={height}\n      style={style}\n      viewBox={`${svgView.x} ${svgView.y} ${svgView.width} ${svgView.height}`}\n    >\n      <title>{title}</title>\n      <desc>{desc}</desc>\n      {children}\n    </svg>\n  );\n}\n","import React, { ReactNode, SVGAttributes } from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface LayerProps {\n  className?: string;\n  children?: ReactNode;\n}\n\nexport type Props = SVGAttributes<SVGGElement> & LayerProps;\n\nexport const Layer = React.forwardRef<SVGGElement, Props>((props: Props, ref) => {\n  const { children, className, ...others } = props;\n  const layerClass = clsx('recharts-layer', className);\n\n  return (\n    <g className={layerClass} {...filterProps(others, true)} ref={ref}>\n      {children}\n    </g>\n  );\n});\n","/* eslint no-console: 0 */\nconst isDev = process.env.NODE_ENV !== 'production';\n\nexport const warn = (condition: boolean, format: string, ...args: any[]) => {\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(\n          'Minified exception occurred; use the non-minified dev environment ' +\n            'for the full error message and additional helpful warnings.',\n        );\n      } else {\n        let argIndex = 0;\n\n        console.warn(format.replace(/%s/g, () => args[argIndex++]));\n      }\n    }\n  }\n};\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const 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, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = 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","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const 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","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i < 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = 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","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -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","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, 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","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n","/**\n * @fileOverview Curve\n */\nimport React, { SVGProps } from 'react';\nimport upperFirst from 'lodash/upperFirst';\n\nimport {\n  symbol as shapeSymbol,\n  symbolCircle,\n  symbolCross,\n  symbolDiamond,\n  symbolSquare,\n  symbolStar,\n  symbolTriangle,\n  symbolWye,\n  SymbolType as D3SymbolType,\n} from 'victory-vendor/d3-shape';\nimport clsx from 'clsx';\nimport { SymbolType } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\ntype SizeType = 'area' | 'diameter';\n\ninterface SymbolFactory {\n  [type: string]: D3SymbolType;\n}\n\nconst symbolFactories: SymbolFactory = {\n  symbolCircle,\n  symbolCross,\n  symbolDiamond,\n  symbolSquare,\n  symbolStar,\n  symbolTriangle,\n  symbolWye,\n};\nconst RADIAN = Math.PI / 180;\n\nconst getSymbolFactory = (type: SymbolType) => {\n  const name = `symbol${upperFirst(type)}`;\n\n  return symbolFactories[name] || symbolCircle;\n};\n\nconst calculateAreaSize = (size: number, sizeType: SizeType, type: SymbolType) => {\n  if (sizeType === 'area') {\n    return size;\n  }\n\n  switch (type) {\n    case 'cross':\n      return (5 * size * size) / 9;\n    case 'diamond':\n      return (0.5 * size * size) / Math.sqrt(3);\n    case 'square':\n      return size * size;\n    case 'star': {\n      const angle = 18 * RADIAN;\n\n      return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.tan(angle) ** 2);\n    }\n    case 'triangle':\n      return (Math.sqrt(3) * size * size) / 4;\n    case 'wye':\n      return ((21 - 10 * Math.sqrt(3)) * size * size) / 8;\n    default:\n      return (Math.PI * size * size) / 4;\n  }\n};\n\nexport interface InnerSymbolsProp {\n  className?: string;\n  type: SymbolType;\n  cx?: number;\n  cy?: number;\n  size?: number;\n  sizeType?: SizeType;\n}\n\nexport type SymbolsProps = SVGProps<SVGPathElement> & InnerSymbolsProp;\n\nconst registerSymbol = (key: string, factory: D3SymbolType) => {\n  symbolFactories[`symbol${upperFirst(key)}`] = factory;\n};\n\nexport const Symbols = ({ type = 'circle', size = 64, sizeType = 'area', ...rest }: SymbolsProps) => {\n  const props = { ...rest, type, size, sizeType };\n\n  /**\n   * Calculate the path of curve\n   * @return {String} path\n   */\n  const getPath = () => {\n    const symbolFactory = getSymbolFactory(type);\n    const symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n\n    return symbol();\n  };\n\n  const { className, cx, cy } = props;\n  const filteredProps = filterProps(props, true);\n\n  if (cx === +cx && cy === +cy && size === +size) {\n    return (\n      <path\n        {...filteredProps}\n        className={clsx('recharts-symbols', className)}\n        transform={`translate(${cx}, ${cy})`}\n        d={getPath()}\n      />\n    );\n  }\n\n  return null;\n};\n\nSymbols.registerSymbol = registerSymbol;\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\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    let 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","/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent, ReactNode, MouseEvent, ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { warn } from '../util/LogUtils';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport {\n  DataKey,\n  LegendType,\n  LayoutType,\n  SymbolType,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n} from '../util/types';\n\nconst SIZE = 32;\nexport type ContentType = ReactElement | ((props: Props) => ReactNode);\nexport type IconType = Exclude<LegendType, 'none'>;\nexport type HorizontalAlignmentType = 'center' | 'left' | 'right';\nexport type VerticalAlignmentType = 'top' | 'bottom' | 'middle';\nexport type Formatter = (\n  value: any,\n  entry: {\n    value: any;\n    id?: string;\n    type?: LegendType;\n    color?: string;\n    payload?: {\n      strokeDasharray: string | number;\n      value?: any;\n    };\n  },\n  index: number,\n) => ReactNode;\n\nexport interface Payload {\n  value: any;\n  id?: string;\n  type?: LegendType;\n  color?: string;\n  payload?: {\n    strokeDasharray: string | number;\n    value?: any;\n  };\n  formatter?: Formatter;\n  inactive?: boolean;\n  legendIcon?: ReactElement<SVGElement>;\n  dataKey?: DataKey<any>;\n}\ninterface InternalProps {\n  content?: ContentType;\n  iconSize?: number;\n  iconType?: IconType;\n  layout?: LayoutType;\n  align?: HorizontalAlignmentType;\n  verticalAlign?: VerticalAlignmentType;\n  payload?: Array<Payload>;\n  inactiveColor?: string;\n  formatter?: Formatter;\n  onMouseEnter?: (data: Payload, index: number, event: MouseEvent) => void;\n  onMouseLeave?: (data: Payload, index: number, event: MouseEvent) => void;\n  onClick?: (data: Payload, index: number, event: MouseEvent) => void;\n}\n\nexport type Props = InternalProps & Omit<PresentationAttributesAdaptChildEvent<any, ReactElement>, keyof InternalProps>;\n\nexport class DefaultLegendContent extends PureComponent<Props> {\n  static displayName = 'Legend';\n\n  static defaultProps = {\n    iconSize: 14,\n    layout: 'horizontal',\n    align: 'center',\n    verticalAlign: 'middle',\n    inactiveColor: '#ccc',\n  };\n\n  /**\n   * Render the path of icon\n   * @param {Object} data Data of each legend item\n   * @return {String} Path element\n   */\n  renderIcon(data: Payload) {\n    const { inactiveColor } = this.props;\n    const halfSize = SIZE / 2;\n    const sixthSize = SIZE / 6;\n    const thirdSize = SIZE / 3;\n    const color = data.inactive ? inactiveColor : data.color;\n\n    if (data.type === 'plainline') {\n      return (\n        <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 (\n        <path\n          strokeWidth={4}\n          fill=\"none\"\n          stroke={color}\n          d={`M0,${halfSize}h${thirdSize}\n            A${sixthSize},${sixthSize},0,1,1,${2 * thirdSize},${halfSize}\n            H${SIZE}M${2 * thirdSize},${halfSize}\n            A${sixthSize},${sixthSize},0,1,1,${thirdSize},${halfSize}`}\n          className=\"recharts-legend-icon\"\n        />\n      );\n    }\n    if (data.type === 'rect') {\n      return (\n        <path\n          stroke=\"none\"\n          fill={color}\n          d={`M0,${SIZE / 8}h${SIZE}v${(SIZE * 3) / 4}h${-SIZE}z`}\n          className=\"recharts-legend-icon\"\n        />\n      );\n    }\n    if (React.isValidElement(data.legendIcon)) {\n      const iconProps: any = { ...data };\n      delete iconProps.legendIcon;\n      return React.cloneElement(data.legendIcon, iconProps);\n    }\n\n    return (\n      <Symbols\n        fill={color}\n        cx={halfSize}\n        cy={halfSize}\n        size={SIZE}\n        sizeType=\"diameter\"\n        type={data.type as SymbolType}\n      />\n    );\n  }\n\n  /**\n   * Draw items of legend\n   * @return {ReactElement} Items\n   */\n  renderItems() {\n    const { payload, iconSize, layout, formatter, inactiveColor } = this.props;\n    const viewBox = { x: 0, y: 0, width: SIZE, height: SIZE };\n    const itemStyle = {\n      display: layout === 'horizontal' ? 'inline-block' : 'block',\n      marginRight: 10,\n    };\n    const svgStyle = { display: 'inline-block', verticalAlign: 'middle', marginRight: 4 };\n\n    return payload.map((entry, i) => {\n      const finalFormatter = entry.formatter || formatter;\n      const className = clsx({\n        'recharts-legend-item': true,\n        [`legend-item-${i}`]: true,\n        inactive: entry.inactive,\n      });\n\n      if (entry.type === 'none') {\n        return null;\n      }\n\n      // Do not render entry.value as functions. Always require static string properties.\n      const entryValue = !isFunction(entry.value) ? entry.value : null;\n      warn(\n        !isFunction(entry.value),\n        `The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: <Bar name=\"Name of my Data\"/>`, // eslint-disable-line max-len\n      );\n\n      const color = entry.inactive ? inactiveColor : entry.color;\n\n      return (\n        <li\n          className={className}\n          style={itemStyle}\n          // eslint-disable-next-line react/no-array-index-key\n          key={`legend-item-${i}`}\n          {...adaptEventsOfChild(this.props, entry, i)}\n        >\n          <Surface width={iconSize} height={iconSize} viewBox={viewBox} style={svgStyle}>\n            {this.renderIcon(entry)}\n          </Surface>\n          <span className=\"recharts-legend-item-text\" style={{ color }}>\n            {finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue}\n          </span>\n        </li>\n      );\n    });\n  }\n\n  render() {\n    const { payload, layout, align } = this.props;\n\n    if (!payload || !payload.length) {\n      return null;\n    }\n\n    const finalStyle = {\n      padding: 0,\n      margin: 0,\n      textAlign: layout === 'horizontal' ? align : 'left',\n    };\n\n    return (\n      <ul className=\"recharts-default-legend\" style={finalStyle}>\n        {this.renderItems()}\n      </ul>\n    );\n  }\n}\n","import uniqBy from 'lodash/uniqBy';\nimport isFunction from 'lodash/isFunction';\n\ntype UniqueFunc<T> = (entry: T) => unknown;\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */\nexport type UniqueOption<T> = boolean | UniqueFunc<T>;\n\nexport function getUniqPayload<T>(payload: Array<T>, option: UniqueOption<T>, defaultUniqBy: UniqueFunc<T>): Array<T> {\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","/**\n * @fileOverview Legend\n */\nimport React, { PureComponent, CSSProperties } from 'react';\nimport { DefaultLegendContent, Payload, Props as DefaultProps, ContentType } from './DefaultLegendContent';\n\nimport { isNumber } from '../util/DataUtils';\nimport { LayoutType } from '../util/types';\nimport { UniqueOption, getUniqPayload } from '../util/payload/getUniqPayload';\n\nfunction defaultUniqBy(entry: Payload) {\n  return entry.value;\n}\n\nfunction renderContent(content: ContentType, props: Props) {\n  if (React.isValidElement(content)) {\n    return React.cloneElement(content, props);\n  }\n  if (typeof content === 'function') {\n    return React.createElement(content as any, props);\n  }\n\n  const { ref, ...otherProps } = props;\n\n  return <DefaultLegendContent {...otherProps} />;\n}\n\nconst EPS = 1;\n\nexport type Props = DefaultProps & {\n  wrapperStyle?: CSSProperties;\n  chartWidth?: number;\n  chartHeight?: number;\n  width?: number;\n  height?: number;\n  margin?: {\n    top?: number;\n    left?: number;\n    bottom?: number;\n    right?: number;\n  };\n  payloadUniqBy?: UniqueOption<Payload>;\n  onBBoxUpdate?: (box: DOMRect | null) => void;\n};\n\ninterface State {\n  boxWidth: number;\n  boxHeight: number;\n}\n\nexport class Legend extends PureComponent<Props, State> {\n  static displayName = 'Legend';\n\n  static defaultProps = {\n    iconSize: 14,\n    layout: 'horizontal',\n    align: 'center',\n    verticalAlign: 'bottom',\n  };\n\n  private wrapperNode: HTMLDivElement;\n\n  static getWithHeight(\n    item: { props: { layout?: LayoutType; height?: number; width?: number } },\n    chartWidth: number,\n  ): null | { height: number } | { width: number } {\n    const { layout } = { ...this.defaultProps, ...item.props };\n\n    if (layout === 'vertical' && isNumber(item.props.height)) {\n      return {\n        height: item.props.height,\n      };\n    }\n    if (layout === 'horizontal') {\n      return {\n        width: item.props.width || chartWidth,\n      };\n    }\n\n    return null;\n  }\n\n  lastBoundingBox = {\n    width: -1,\n    height: -1,\n  };\n\n  public componentDidMount() {\n    this.updateBBox();\n  }\n\n  public componentDidUpdate() {\n    this.updateBBox();\n  }\n\n  public getBBox() {\n    if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n      const box = this.wrapperNode.getBoundingClientRect();\n      box.height = this.wrapperNode.offsetHeight;\n      box.width = this.wrapperNode.offsetWidth;\n      return box;\n    }\n    return null;\n  }\n\n  private updateBBox() {\n    const { onBBoxUpdate } = this.props;\n    const box = this.getBBox();\n    if (box) {\n      if (\n        Math.abs(box.width - this.lastBoundingBox.width) > EPS ||\n        Math.abs(box.height - this.lastBoundingBox.height) > EPS\n      ) {\n        this.lastBoundingBox.width = box.width;\n        this.lastBoundingBox.height = box.height;\n        if (onBBoxUpdate) {\n          onBBoxUpdate(box);\n        }\n      }\n    } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n      this.lastBoundingBox.width = -1;\n      this.lastBoundingBox.height = -1;\n      if (onBBoxUpdate) {\n        onBBoxUpdate(null);\n      }\n    }\n  }\n\n  private getBBoxSnapshot() {\n    if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n      return { ...this.lastBoundingBox };\n    }\n\n    return { width: 0, height: 0 };\n  }\n\n  private getDefaultPosition(style: CSSProperties) {\n    const { layout, align, verticalAlign, margin, chartWidth, chartHeight } = this.props;\n    let hPos, vPos;\n\n    if (\n      !style ||\n      ((style.left === undefined || style.left === null) && (style.right === undefined || style.right === null))\n    ) {\n      if (align === 'center' && layout === 'vertical') {\n        const box = this.getBBoxSnapshot();\n        hPos = { left: ((chartWidth || 0) - box.width) / 2 };\n      } else {\n        hPos = align === 'right' ? { right: (margin && margin.right) || 0 } : { left: (margin && margin.left) || 0 };\n      }\n    }\n\n    if (\n      !style ||\n      ((style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null))\n    ) {\n      if (verticalAlign === 'middle') {\n        const box = this.getBBoxSnapshot();\n        vPos = { top: ((chartHeight || 0) - box.height) / 2 };\n      } else {\n        vPos =\n          verticalAlign === 'bottom'\n            ? { bottom: (margin && margin.bottom) || 0 }\n            : { top: (margin && margin.top) || 0 };\n      }\n    }\n\n    return { ...hPos, ...vPos };\n  }\n\n  public render() {\n    const { content, width, height, wrapperStyle, payloadUniqBy, payload } = this.props;\n    const outerStyle: CSSProperties = {\n      position: 'absolute',\n      width: width || 'auto',\n      height: height || 'auto',\n      ...this.getDefaultPosition(wrapperStyle),\n      ...wrapperStyle,\n    };\n\n    return (\n      <div\n        className=\"recharts-legend-wrapper\"\n        style={outerStyle}\n        ref={node => {\n          this.wrapperNode = node;\n        }}\n      >\n        {renderContent(content, { ...this.props, payload: getUniqPayload(payload, payloadUniqBy, defaultUniqBy) })}\n      </div>\n    );\n  }\n}\n","/**\n * @fileOverview Default Tooltip Content\n */\n\nimport React, { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport sortBy from 'lodash/sortBy';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumOrStr } from '../util/DataUtils';\n\nfunction defaultFormatter<TValue extends ValueType>(value: TValue) {\n  return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? (value.join(' ~ ') as TValue) : value;\n}\n\nexport type TooltipType = 'none';\nexport type ValueType = number | string | Array<number | string>;\nexport type NameType = number | string;\nexport type Formatter<TValue extends ValueType, TName extends NameType> = (\n  value: TValue,\n  name: TName,\n  item: Payload<TValue, TName>,\n  index: number,\n  payload: Array<Payload<TValue, TName>>,\n) => [React.ReactNode, TName] | React.ReactNode;\n\nexport interface Payload<TValue extends ValueType, TName extends NameType> {\n  type?: TooltipType;\n  color?: string;\n  formatter?: Formatter<TValue, TName>;\n  name?: TName;\n  value?: TValue;\n  unit?: ReactNode;\n  dataKey?: string | number;\n  payload?: any;\n  chartType?: string;\n  stroke?: string;\n  strokeDasharray?: string | number;\n  strokeWidth?: number | string;\n  className?: string;\n  hide?: boolean;\n}\n\nexport interface Props<TValue extends ValueType, TName extends NameType> {\n  separator?: string;\n  wrapperClassName?: string;\n  labelClassName?: string;\n  formatter?: Formatter<TValue, TName>;\n  contentStyle?: CSSProperties;\n  itemStyle?: CSSProperties;\n  labelStyle?: CSSProperties;\n  labelFormatter?: (label: any, payload: Array<Payload<TValue, TName>>) => ReactNode;\n  label?: any;\n  payload?: Array<Payload<TValue, TName>>;\n  itemSorter?: (item: Payload<TValue, TName>) => number | string;\n  accessibilityLayer?: boolean;\n}\n\nexport const DefaultTooltipContent = <TValue extends ValueType, TName extends NameType>(\n  props: Props<TValue, TName>,\n) => {\n  const {\n    separator = ' : ',\n    contentStyle = {},\n    itemStyle = {},\n    labelStyle = {},\n    payload,\n    formatter,\n    itemSorter,\n    wrapperClassName,\n    labelClassName,\n    label,\n    labelFormatter,\n    accessibilityLayer = false,\n  } = props;\n\n  const renderContent = () => {\n    if (payload && payload.length) {\n      const listStyle = { padding: 0, margin: 0 };\n\n      const items = (itemSorter ? sortBy(payload, itemSorter) : payload).map((entry, i) => {\n        if (entry.type === 'none') {\n          return null;\n        }\n\n        const finalItemStyle = {\n          display: 'block',\n          paddingTop: 4,\n          paddingBottom: 4,\n          color: entry.color || '#000',\n          ...itemStyle,\n        };\n        const finalFormatter = entry.formatter || formatter || defaultFormatter;\n        const { value, name } = entry;\n        let finalValue: React.ReactNode = value;\n        let finalName: React.ReactNode = name;\n        if (finalFormatter && finalValue != null && finalName != null) {\n          const formatted = finalFormatter(value, name, entry, i, payload);\n          if (Array.isArray(formatted)) {\n            [finalValue, finalName] = formatted;\n          } else {\n            finalValue = formatted;\n          }\n        }\n\n        return (\n          // eslint-disable-next-line react/no-array-index-key\n          <li className=\"recharts-tooltip-item\" key={`tooltip-item-${i}`} style={finalItemStyle}>\n            {isNumOrStr(finalName) ? <span className=\"recharts-tooltip-item-name\">{finalName}</span> : null}\n            {isNumOrStr(finalName) ? <span className=\"recharts-tooltip-item-separator\">{separator}</span> : null}\n            <span className=\"recharts-tooltip-item-value\">{finalValue}</span>\n            <span className=\"recharts-tooltip-item-unit\">{entry.unit || ''}</span>\n          </li>\n        );\n      });\n\n      return (\n        <ul className=\"recharts-tooltip-item-list\" style={listStyle}>\n          {items}\n        </ul>\n      );\n    }\n\n    return null;\n  };\n\n  const finalStyle: React.CSSProperties = {\n    margin: 0,\n    padding: 10,\n    backgroundColor: '#fff',\n    border: '1px solid #ccc',\n    whiteSpace: 'nowrap',\n    ...contentStyle,\n  };\n  const finalLabelStyle = {\n    margin: 0,\n    ...labelStyle,\n  };\n  const hasLabel = !isNil(label);\n  let finalLabel = hasLabel ? label : '';\n  const wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n  const labelCN = clsx('recharts-tooltip-label', labelClassName);\n\n  if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n    finalLabel = labelFormatter(label, payload);\n  }\n\n  const accessibilityAttributes = accessibilityLayer\n    ? ({\n        role: 'status',\n        'aria-live': 'assertive',\n      } as HTMLAttributes<HTMLDivElement>)\n    : {};\n\n  return (\n    <div className={wrapperCN} style={finalStyle} {...accessibilityAttributes}>\n      <p className={labelCN} style={finalLabelStyle}>\n        {React.isValidElement(finalLabel) ? finalLabel : `${finalLabel}`}\n      </p>\n      {renderContent()}\n    </div>\n  );\n};\n","import clsx from 'clsx';\nimport { CSSProperties } from 'react';\nimport { isNumber } from '../DataUtils';\nimport { Coordinate, CartesianViewBox, AllowInDimension } from '../types';\n\nexport type Dimension2D = 'x' | 'y';\n\nconst CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\n\nconst TOOLTIP_HIDDEN: CSSProperties = { visibility: 'hidden' };\n\nexport function getTooltipCSSClassName({\n  coordinate,\n  translateX,\n  translateY,\n}: {\n  translateX: number | undefined;\n  translateY: number | undefined;\n  coordinate: Partial<Coordinate> | undefined;\n}): string {\n  return clsx(CSS_CLASS_PREFIX, {\n    [`${CSS_CLASS_PREFIX}-right`]:\n      isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x,\n    [`${CSS_CLASS_PREFIX}-left`]:\n      isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x,\n    [`${CSS_CLASS_PREFIX}-bottom`]:\n      isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y,\n    [`${CSS_CLASS_PREFIX}-top`]:\n      isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y,\n  });\n}\n\nexport function getTooltipTranslateXY({\n  allowEscapeViewBox,\n  coordinate,\n  key,\n  offsetTopLeft,\n  position,\n  reverseDirection,\n  tooltipDimension,\n  viewBox,\n  viewBoxDimension,\n}: {\n  allowEscapeViewBox: AllowInDimension;\n  coordinate: Partial<Coordinate>;\n  key: Dimension2D;\n  offsetTopLeft: number;\n  position: Partial<Coordinate>;\n  reverseDirection: AllowInDimension;\n  tooltipDimension: number;\n  viewBox: CartesianViewBox;\n  viewBoxDimension: number;\n}): number {\n  if (position && isNumber(position[key])) {\n    return position[key];\n  }\n\n  const negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n  const positive = coordinate[key] + offsetTopLeft;\n  if (allowEscapeViewBox[key]) {\n    return reverseDirection[key] ? negative : positive;\n  }\n\n  if (reverseDirection[key]) {\n    const tooltipBoundary = negative;\n    const viewBoxBoundary = viewBox[key];\n    if (tooltipBoundary < viewBoxBoundary) {\n      return Math.max(positive, viewBox[key]);\n    }\n    return Math.max(negative, viewBox[key]);\n  }\n  const tooltipBoundary = positive + tooltipDimension;\n  const viewBoxBoundary = viewBox[key] + viewBoxDimension;\n  if (tooltipBoundary > viewBoxBoundary) {\n    return Math.max(negative, viewBox[key]);\n  }\n  return Math.max(positive, viewBox[key]);\n}\n\nexport function getTransformStyle({\n  translateX,\n  translateY,\n  useTranslate3d,\n}: {\n  useTranslate3d: boolean;\n  translateX: number;\n  translateY: number;\n}): CSSProperties {\n  return {\n    transform: useTranslate3d\n      ? `translate3d(${translateX}px, ${translateY}px, 0)`\n      : `translate(${translateX}px, ${translateY}px)`,\n  };\n}\n\nexport function getTooltipTranslate({\n  allowEscapeViewBox,\n  coordinate,\n  offsetTopLeft,\n  position,\n  reverseDirection,\n  tooltipBox,\n  useTranslate3d,\n  viewBox,\n}: {\n  allowEscapeViewBox: AllowInDimension;\n  coordinate: Partial<Coordinate> | undefined;\n  offsetTopLeft: number;\n  position: Partial<Coordinate>;\n  reverseDirection: AllowInDimension;\n  tooltipBox: { width: number; height: number };\n  useTranslate3d: boolean;\n  viewBox: CartesianViewBox;\n}): { cssProperties: CSSProperties; cssClasses: string } {\n  let cssProperties: CSSProperties, translateX: number | undefined, translateY: number | undefined;\n  if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n    translateX = getTooltipTranslateXY({\n      allowEscapeViewBox,\n      coordinate,\n      key: 'x',\n      offsetTopLeft,\n      position,\n      reverseDirection,\n      tooltipDimension: tooltipBox.width,\n      viewBox,\n      viewBoxDimension: viewBox.width,\n    });\n\n    translateY = getTooltipTranslateXY({\n      allowEscapeViewBox,\n      coordinate,\n      key: 'y',\n      offsetTopLeft,\n      position,\n      reverseDirection,\n      tooltipDimension: tooltipBox.height,\n      viewBox,\n      viewBoxDimension: viewBox.height,\n    });\n    cssProperties = getTransformStyle({\n      translateX,\n      translateY,\n      useTranslate3d,\n    });\n  } else {\n    cssProperties = TOOLTIP_HIDDEN;\n  }\n  return {\n    cssProperties,\n    cssClasses: getTooltipCSSClassName({\n      translateX,\n      translateY,\n      coordinate,\n    }),\n  };\n}\n","import React, { CSSProperties, PureComponent, ReactNode } from 'react';\nimport { AllowInDimension, AnimationDuration, AnimationTiming, CartesianViewBox, Coordinate } from '../util/types';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\n\nexport type TooltipBoundingBoxProps = {\n  active: boolean;\n  allowEscapeViewBox: AllowInDimension;\n  animationDuration: AnimationDuration;\n  animationEasing: AnimationTiming;\n  children: ReactNode;\n  coordinate: Partial<Coordinate>;\n  hasPayload: boolean;\n  isAnimationActive: boolean;\n  offset: number;\n  position: Partial<Coordinate>;\n  reverseDirection: AllowInDimension;\n  useTranslate3d: boolean;\n  viewBox: CartesianViewBox;\n  wrapperStyle: CSSProperties;\n};\n\ntype State = {\n  dismissed: boolean;\n  dismissedAtCoordinate: Coordinate;\n  lastBoundingBox: {\n    width: number;\n    height: number;\n  };\n};\n\nconst EPSILON = 1;\n\nexport class TooltipBoundingBox extends PureComponent<TooltipBoundingBoxProps, State> {\n  state = {\n    dismissed: false,\n    dismissedAtCoordinate: { x: 0, y: 0 },\n    lastBoundingBox: {\n      width: -1,\n      height: -1,\n    },\n  };\n\n  private wrapperNode: HTMLDivElement;\n\n  updateBBox() {\n    if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n      const box = this.wrapperNode.getBoundingClientRect();\n\n      if (\n        Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON ||\n        Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON\n      ) {\n        this.setState({\n          lastBoundingBox: {\n            width: box.width,\n            height: box.height,\n          },\n        });\n      }\n    } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n      this.setState({\n        lastBoundingBox: {\n          width: -1,\n          height: -1,\n        },\n      });\n    }\n  }\n\n  componentDidMount() {\n    document.addEventListener('keydown', this.handleKeyDown);\n    this.updateBBox();\n  }\n\n  componentWillUnmount() {\n    document.removeEventListener('keydown', this.handleKeyDown);\n  }\n\n  componentDidUpdate() {\n    if (this.props.active) {\n      this.updateBBox();\n    }\n\n    if (!this.state.dismissed) {\n      return;\n    }\n\n    if (\n      this.props.coordinate?.x !== this.state.dismissedAtCoordinate.x ||\n      this.props.coordinate?.y !== this.state.dismissedAtCoordinate.y\n    ) {\n      this.state.dismissed = false;\n    }\n  }\n\n  handleKeyDown = (event: KeyboardEvent) => {\n    if (event.key === 'Escape') {\n      this.setState({\n        dismissed: true,\n        dismissedAtCoordinate: {\n          x: this.props.coordinate?.x ?? 0,\n          y: this.props.coordinate?.y ?? 0,\n        },\n      });\n    }\n  };\n\n  render() {\n    const {\n      active,\n      allowEscapeViewBox,\n      animationDuration,\n      animationEasing,\n      children,\n      coordinate,\n      hasPayload,\n      isAnimationActive,\n      offset,\n      position,\n      reverseDirection,\n      useTranslate3d,\n      viewBox,\n      wrapperStyle,\n    } = this.props;\n\n    const { cssClasses, cssProperties } = getTooltipTranslate({\n      allowEscapeViewBox,\n      coordinate,\n      offsetTopLeft: offset,\n      position,\n      reverseDirection,\n      tooltipBox: this.state.lastBoundingBox,\n      useTranslate3d,\n      viewBox,\n    });\n\n    const outerStyle: CSSProperties = {\n      transition: isAnimationActive && active ? `transform ${animationDuration}ms ${animationEasing}` : undefined,\n      ...cssProperties,\n      pointerEvents: 'none',\n      visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      ...wrapperStyle,\n    };\n\n    return (\n      // This element allow listening to the `Escape` key.\n      // See https://github.com/recharts/recharts/pull/2925\n      <div\n        tabIndex={-1}\n        className={cssClasses}\n        style={outerStyle}\n        ref={node => {\n          this.wrapperNode = node;\n        }}\n      >\n        {children}\n      </div>\n    );\n  }\n}\n","const parseIsSsrByDefault = (): boolean =>\n  !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n\nexport interface GlobalConfig {\n  isSsr?: boolean;\n}\n\nexport type GlobalConfigKeys = 'isSsr';\n\nexport const Global = {\n  isSsr: parseIsSsrByDefault(),\n\n  get: (key: 'isSsr') => {\n    return Global[key];\n  },\n\n  set: (key: GlobalConfigKeys | GlobalConfig, value?: any) => {\n    if (typeof key === 'string') {\n      Global[key] = value;\n    } else {\n      const keys = Object.keys(key);\n\n      if (keys && keys.length) {\n        keys.forEach((k: GlobalConfigKeys) => {\n          Global[k] = key[k];\n        });\n      }\n    }\n  },\n};\n","/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent, CSSProperties, ReactNode, ReactElement, SVGProps } from 'react';\nimport {\n  DefaultTooltipContent,\n  ValueType,\n  NameType,\n  Payload,\n  Props as ToltipContentProps,\n} from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\n\nimport { Global } from '../util/Global';\nimport { UniqueOption, getUniqPayload } from '../util/payload/getUniqPayload';\nimport { AllowInDimension, AnimationDuration, AnimationTiming, CartesianViewBox, Coordinate } from '../util/types';\n\nexport type ContentType<TValue extends ValueType, TName extends NameType> =\n  | ReactElement\n  | ((props: TooltipProps<TValue, TName>) => ReactNode);\n\nfunction defaultUniqBy<TValue extends ValueType, TName extends NameType>(entry: Payload<TValue, TName>) {\n  return entry.dataKey;\n}\n\nfunction renderContent<TValue extends ValueType, TName extends NameType>(\n  content: ContentType<TValue, TName>,\n  props: TooltipProps<TValue, TName>,\n): ReactNode {\n  if (React.isValidElement(content)) {\n    return React.cloneElement(content, props);\n  }\n  if (typeof content === 'function') {\n    return React.createElement(content as any, props);\n  }\n\n  return <DefaultTooltipContent {...props} />;\n}\n\nexport type TooltipProps<TValue extends ValueType, TName extends NameType> = ToltipContentProps<TValue, TName> & {\n  accessibilityLayer?: boolean;\n  /**\n   * If true, then Tooltip is always displayed, once an activeIndex is set by mouse over, or programmatically.\n   * If false, then Tooltip is never displayed.\n   * If active is undefined, Recharts will control when the Tooltip displays. This includes mouse and keyboard controls.\n   */\n  active?: boolean | undefined;\n  /**\n   * If true, then Tooltip will information about hidden series (defaults to false). Interacting with the hide property of Area, Bar, Line, Scatter.\n   */\n  includeHidden?: boolean | undefined;\n  allowEscapeViewBox?: AllowInDimension;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n  content?: ContentType<TValue, TName>;\n  coordinate?: Partial<Coordinate>;\n  cursor?: boolean | ReactElement | SVGProps<SVGElement>;\n  filterNull?: boolean;\n  defaultIndex?: number;\n  isAnimationActive?: boolean;\n  offset?: number;\n  payloadUniqBy?: UniqueOption<Payload<TValue, TName>>;\n  position?: Partial<Coordinate>;\n  reverseDirection?: AllowInDimension;\n  shared?: boolean;\n  trigger?: 'hover' | 'click';\n  useTranslate3d?: boolean;\n  viewBox?: CartesianViewBox;\n  wrapperStyle?: CSSProperties;\n};\n\nexport class Tooltip<TValue extends ValueType, TName extends NameType> extends PureComponent<\n  TooltipProps<TValue, TName>\n> {\n  static displayName = 'Tooltip';\n\n  static defaultProps = {\n    accessibilityLayer: false,\n    allowEscapeViewBox: { x: false, y: false },\n    animationDuration: 400,\n    animationEasing: 'ease',\n    contentStyle: {},\n    coordinate: { x: 0, y: 0 },\n    cursor: true,\n    cursorStyle: {},\n    filterNull: true,\n    isAnimationActive: !Global.isSsr,\n    itemStyle: {},\n    labelStyle: {},\n    offset: 10,\n    reverseDirection: { x: false, y: false },\n    separator: ' : ',\n    trigger: 'hover',\n    useTranslate3d: false,\n    viewBox: { x: 0, y: 0, height: 0, width: 0 },\n    wrapperStyle: {},\n  };\n\n  render() {\n    const {\n      active,\n      allowEscapeViewBox,\n      animationDuration,\n      animationEasing,\n      content,\n      coordinate,\n      filterNull,\n      isAnimationActive,\n      offset,\n      payload,\n      payloadUniqBy,\n      position,\n      reverseDirection,\n      useTranslate3d,\n      viewBox,\n      wrapperStyle,\n    } = this.props;\n    let finalPayload: Payload<TValue, TName>[] = payload ?? [];\n\n    if (filterNull && finalPayload.length) {\n      finalPayload = getUniqPayload(\n        payload.filter(entry => entry.value != null && (entry.hide !== true || this.props.includeHidden)),\n        payloadUniqBy,\n        defaultUniqBy,\n      );\n    }\n\n    const hasPayload = finalPayload.length > 0;\n\n    return (\n      <TooltipBoundingBox\n        allowEscapeViewBox={allowEscapeViewBox}\n        animationDuration={animationDuration}\n        animationEasing={animationEasing}\n        isAnimationActive={isAnimationActive}\n        active={active}\n        coordinate={coordinate}\n        hasPayload={hasPayload}\n        offset={offset}\n        position={position}\n        reverseDirection={reverseDirection}\n        useTranslate3d={useTranslate3d}\n        viewBox={viewBox}\n        wrapperStyle={wrapperStyle}\n      >\n        {renderContent(content, { ...this.props, payload: finalPayload })}\n      </TooltipBoundingBox>\n    );\n  }\n}\n","/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, {\n  ReactElement,\n  forwardRef,\n  cloneElement,\n  useState,\n  useImperativeHandle,\n  useRef,\n  useEffect,\n  useMemo,\n  CSSProperties,\n  useCallback,\n} from 'react';\nimport throttle from 'lodash/throttle';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\n\nexport interface Props {\n  aspect?: number;\n  width?: string | number;\n  height?: string | number;\n  minWidth?: string | number;\n  minHeight?: string | number;\n  initialDimension?: {\n    width: number;\n    height: number;\n  };\n  maxHeight?: number;\n  children: ReactElement;\n  debounce?: number;\n  id?: string | number;\n  className?: string | number;\n  style?: Omit<CSSProperties, keyof Props>;\n  onResize?: (width: number, height: number) => void;\n}\n\nexport const ResponsiveContainer = forwardRef<HTMLDivElement | { current: HTMLDivElement }, Props>(\n  (\n    {\n      aspect,\n      initialDimension = {\n        width: -1,\n        height: -1,\n      },\n      width = '100%',\n      height = '100%',\n      /*\n       * default min-width to 0 if not specified - 'auto' causes issues with flexbox\n       * https://github.com/recharts/recharts/issues/172\n       */\n      minWidth = 0,\n      minHeight,\n      maxHeight,\n      children,\n      debounce = 0,\n      id,\n      className,\n      onResize,\n      style = {},\n    },\n    ref,\n  ) => {\n    const containerRef = useRef<HTMLDivElement>(null);\n    const onResizeRef = useRef<Props['onResize']>();\n    onResizeRef.current = onResize;\n    useImperativeHandle(ref, () => {\n      return Object.defineProperty(containerRef.current, 'current', {\n        get() {\n          // eslint-disable-next-line no-console\n          console.warn('The usage of ref.current.current is deprecated and will no longer be supported.');\n          return containerRef.current;\n        },\n        configurable: true,\n      });\n    });\n\n    const [sizes, setSizes] = useState<{\n      containerWidth: number;\n      containerHeight: number;\n    }>({\n      containerWidth: initialDimension.width,\n      containerHeight: initialDimension.height,\n    });\n\n    const setContainerSize = useCallback((newWidth: number, newHeight: number) => {\n      setSizes(prevState => {\n        const roundedWidth = Math.round(newWidth);\n        const roundedHeight = Math.round(newHeight);\n        if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n          return prevState;\n        }\n\n        return { containerWidth: roundedWidth, containerHeight: roundedHeight };\n      });\n    }, []);\n\n    useEffect(() => {\n      let callback = (entries: ResizeObserverEntry[]) => {\n        const { width: containerWidth, height: containerHeight } = entries[0].contentRect;\n        setContainerSize(containerWidth, containerHeight);\n        onResizeRef.current?.(containerWidth, containerHeight);\n      };\n      if (debounce > 0) {\n        callback = throttle(callback, debounce, { trailing: true, leading: false });\n      }\n      const observer = new ResizeObserver(callback);\n\n      const { width: containerWidth, height: containerHeight } = containerRef.current.getBoundingClientRect();\n      setContainerSize(containerWidth, containerHeight);\n\n      observer.observe(containerRef.current);\n\n      return () => {\n        observer.disconnect();\n      };\n    }, [setContainerSize, debounce]);\n\n    const chartContent = useMemo(() => {\n      const { containerWidth, containerHeight } = sizes;\n\n      if (containerWidth < 0 || containerHeight < 0) {\n        return null;\n      }\n\n      warn(\n        isPercent(width) || isPercent(height),\n        `The width(%s) and height(%s) are both fixed numbers,\n       maybe you don't need to use a ResponsiveContainer.`,\n        width,\n        height,\n      );\n\n      warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n\n      let calculatedWidth: number = isPercent(width) ? containerWidth : (width as number);\n      let calculatedHeight: number = isPercent(height) ? containerHeight : (height as number);\n\n      if (aspect && aspect > 0) {\n        // Preserve the desired aspect ratio\n        if (calculatedWidth) {\n          // Will default to using width for aspect ratio\n          calculatedHeight = calculatedWidth / aspect;\n        } else if (calculatedHeight) {\n          // But we should also take height into consideration\n          calculatedWidth = calculatedHeight * aspect;\n        }\n\n        // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n        if (maxHeight && calculatedHeight > maxHeight) {\n          calculatedHeight = maxHeight;\n        }\n      }\n\n      warn(\n        calculatedWidth > 0 || calculatedHeight > 0,\n        `The width(%s) and height(%s) of chart should be greater than 0,\n       please check the style of container, or the props width(%s) and height(%s),\n       or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\n       height and width.`,\n        calculatedWidth,\n        calculatedHeight,\n        width,\n        height,\n        minWidth,\n        minHeight,\n        aspect,\n      );\n\n      const isCharts = !Array.isArray(children) && getDisplayName(children.type).endsWith('Chart');\n\n      return React.Children.map(children, child => {\n        if (React.isValidElement<any>(child)) {\n          return cloneElement(child, {\n            width: calculatedWidth,\n            height: calculatedHeight,\n            // calculate the actual size and override it.\n            ...(isCharts\n              ? {\n                  style: {\n                    height: '100%',\n                    width: '100%',\n                    maxHeight: calculatedHeight,\n                    maxWidth: calculatedWidth,\n                    // keep components style\n                    ...child.props.style,\n                  },\n                }\n              : {}),\n          });\n        }\n        return child;\n      });\n    }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n\n    return (\n      <div\n        id={id ? `${id}` : undefined}\n        className={clsx('recharts-responsive-container', className)}\n        style={{ ...style, width, height, minWidth, minHeight, maxHeight }}\n        ref={containerRef}\n      >\n        {chartContent}\n      </div>\n    );\n  },\n);\n","/**\n * @fileOverview Cross\n */\nimport type { FunctionComponent, SVGProps } from 'react';\n\nexport type Props = SVGProps<SVGElement>;\n\nexport const Cell: FunctionComponent<Props> = (_props: Props) => null;\n\nCell.displayName = 'Cell';\n","import { CSSProperties } from 'react';\nimport { Global } from './Global';\nimport { Size } from './types';\n\ninterface StringCache {\n  widthCache: Record<string, any>;\n  cacheCount: number;\n}\n\nconst stringCache: StringCache = {\n  widthCache: {},\n  cacheCount: 0,\n};\nconst MAX_CACHE_NUM = 2000;\nconst SPAN_STYLE = {\n  position: 'absolute',\n  top: '-20000px',\n  left: 0,\n  padding: 0,\n  margin: 0,\n  border: 'none',\n  whiteSpace: 'pre',\n};\nconst STYLE_LIST = [\n  'minWidth',\n  'maxWidth',\n  'width',\n  'minHeight',\n  'maxHeight',\n  'height',\n  'top',\n  'left',\n  'fontSize',\n  'lineHeight',\n  'padding',\n  'margin',\n  'paddingLeft',\n  'paddingRight',\n  'paddingTop',\n  'paddingBottom',\n  'marginLeft',\n  'marginRight',\n  'marginTop',\n  'marginBottom',\n];\nconst MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name: string, value: number) {\n  if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n    return `${value}px`;\n  }\n\n  return value;\n}\n\nfunction camelToMiddleLine(text: string) {\n  const strs = text.split('');\n\n  const formatStrs = strs.reduce((result, entry) => {\n    if (entry === entry.toUpperCase()) {\n      return [...result, '-', entry.toLowerCase()];\n    }\n\n    return [...result, entry];\n  }, []);\n\n  return formatStrs.join('');\n}\n\nexport const getStyleString = (style: CSSProperties) =>\n  Object.keys(style).reduce(\n    (result, s) => `${result}${camelToMiddleLine(s)}:${autoCompleteStyle(s, (style as Record<string, any>)[s])};`,\n    '',\n  );\n\nfunction removeInvalidKeys(obj: Record<string, any>) {\n  const copyObj = { ...obj };\n  Object.keys(copyObj).forEach(key => {\n    if (!copyObj[key]) {\n      delete copyObj[key];\n    }\n  });\n  return copyObj;\n}\n\nexport const getStringSize = (text: string | number, style: CSSProperties = {}): Size => {\n  if (text === undefined || text === null || Global.isSsr) {\n    return { width: 0, height: 0 };\n  }\n\n  const copyStyle = removeInvalidKeys(style);\n  const cacheKey = JSON.stringify({ text, copyStyle });\n\n  if (stringCache.widthCache[cacheKey]) {\n    return stringCache.widthCache[cacheKey];\n  }\n\n  try {\n    let measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\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    }\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    const measurementSpanStyle: Record<string, any> = { ...SPAN_STYLE, ...copyStyle };\n    Object.assign(measurementSpan.style, measurementSpanStyle);\n\n    measurementSpan.textContent = `${text}`;\n\n    const rect = measurementSpan.getBoundingClientRect();\n    const result = { width: rect.width, 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 { width: 0, height: 0 };\n  }\n};\n\ninterface ContainerOffset {\n  top: number;\n  left: number;\n}\n\nexport const getOffset = (rect: ContainerOffset): ContainerOffset => {\n  return {\n    top: rect.top + window.scrollY - document.documentElement.clientTop,\n    left: rect.left + window.scrollX - document.documentElement.clientLeft,\n  };\n};\n","const MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nconst ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nconst CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nconst NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\n\nconst CONVERSION_RATES: Record<string, number> = {\n  cm: 96 / 2.54,\n  mm: 96 / 25.4,\n  pt: 96 / 72,\n  pc: 96 / 6,\n  in: 96,\n  Q: 96 / (2.54 * 40),\n  px: 1,\n} as const;\n\nconst FIXED_CSS_LENGTH_UNITS: Array<keyof typeof CONVERSION_RATES> = Object.keys(CONVERSION_RATES);\nconst STR_NAN = 'NaN';\n\nfunction convertToPx(value: number, unit: string): number {\n  return value * CONVERSION_RATES[unit];\n}\n\nclass DecimalCSS {\n  static parse(str: string) {\n    const [, numStr, unit] = NUM_SPLIT_REGEX.exec(str) ?? [];\n\n    return new DecimalCSS(parseFloat(numStr), unit ?? '');\n  }\n\n  constructor(public num: number, public unit: string) {\n    this.num = num;\n    this.unit = unit;\n\n    if (Number.isNaN(num)) {\n      this.unit = '';\n    }\n\n    if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n      this.num = NaN;\n      this.unit = '';\n    }\n\n    if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n      this.num = convertToPx(num, unit);\n      this.unit = 'px';\n    }\n  }\n\n  add(other: DecimalCSS) {\n    if (this.unit !== other.unit) {\n      return new DecimalCSS(NaN, '');\n    }\n\n    return new DecimalCSS(this.num + other.num, this.unit);\n  }\n\n  subtract(other: DecimalCSS) {\n    if (this.unit !== other.unit) {\n      return new DecimalCSS(NaN, '');\n    }\n\n    return new DecimalCSS(this.num - other.num, this.unit);\n  }\n\n  multiply(other: DecimalCSS) {\n    if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n      return new DecimalCSS(NaN, '');\n    }\n\n    return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n  }\n\n  divide(other: DecimalCSS) {\n    if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n      return new DecimalCSS(NaN, '');\n    }\n\n    return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n  }\n\n  toString() {\n    return `${this.num}${this.unit}`;\n  }\n\n  isNaN() {\n    return Number.isNaN(this.num);\n  }\n}\n\nfunction calculateArithmetic(expr: string): string {\n  if (expr.includes(STR_NAN)) {\n    return STR_NAN;\n  }\n\n  let newExpr = expr;\n  while (newExpr.includes('*') || newExpr.includes('/')) {\n    const [, leftOperand, operator, rightOperand] = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr) ?? [];\n    const lTs = DecimalCSS.parse(leftOperand ?? '');\n    const rTs = DecimalCSS.parse(rightOperand ?? '');\n    const result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);\n    if (result.isNaN()) {\n      return STR_NAN;\n    }\n    newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n  }\n\n  while (newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)) {\n    const [, leftOperand, operator, rightOperand] = ADD_OR_SUBTRACT_REGEX.exec(newExpr) ?? [];\n    const lTs = DecimalCSS.parse(leftOperand ?? '');\n    const rTs = DecimalCSS.parse(rightOperand ?? '');\n    const result = operator === '+' ? lTs.add(rTs) : lTs.subtract(rTs);\n    if (result.isNaN()) {\n      return STR_NAN;\n    }\n    newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, result.toString());\n  }\n\n  return newExpr;\n}\n\nconst PARENTHESES_REGEX = /\\(([^()]*)\\)/;\n\nfunction calculateParentheses(expr: string): string {\n  let newExpr = expr;\n  while (newExpr.includes('(')) {\n    const [, parentheticalExpression] = PARENTHESES_REGEX.exec(newExpr);\n    newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n  }\n\n  return newExpr;\n}\n\nfunction evaluateExpression(expression: string): string {\n  let newExpr = expression.replace(/\\s+/g, '');\n  newExpr = calculateParentheses(newExpr);\n  newExpr = calculateArithmetic(newExpr);\n\n  return newExpr;\n}\n\nexport function safeEvaluateExpression(expression: string): string {\n  try {\n    return evaluateExpression(expression);\n  } catch (e) {\n    /* istanbul ignore next */\n    return STR_NAN;\n  }\n}\n\nexport function reduceCSSCalc(expression: string): string {\n  const result = safeEvaluateExpression(expression.slice(5, -1));\n\n  if (result === STR_NAN) {\n    // notify the user\n    return '';\n  }\n\n  return result;\n}\n","import React, { CSSProperties, SVGProps, useMemo } from 'react';\n\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { reduceCSSCalc } from '../util/ReduceCSSCalc';\n\nconst BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\ninterface WordWithComputedWidth {\n  word: string;\n  width: number;\n}\n\ninterface CalculatedWordWidths {\n  wordsWithComputedWidth: Array<WordWithComputedWidth>;\n  spaceWidth: number;\n}\n\ntype CalculateWordWidthsParam = Pick<Props, 'children' | 'breakAll' | 'style'>;\n\nconst calculateWordWidths = ({ children, breakAll, style }: CalculateWordWidthsParam): CalculatedWordWidths => {\n  try {\n    let words: string[] = [];\n    if (!isNil(children)) {\n      if (breakAll) {\n        words = children.toString().split('');\n      } else {\n        words = children.toString().split(BREAKING_SPACES);\n      }\n    }\n\n    const wordsWithComputedWidth = words.map(word => ({ word, width: getStringSize(word, style).width }));\n\n    const spaceWidth = breakAll ? 0 : getStringSize('\\u00A0', style).width;\n\n    return { wordsWithComputedWidth, spaceWidth };\n  } catch (e) {\n    return null;\n  }\n};\n\ninterface TextProps {\n  scaleToFit?: boolean;\n  angle?: number;\n  textAnchor?: 'start' | 'middle' | 'end' | 'inherit';\n  verticalAnchor?: 'start' | 'middle' | 'end';\n  style?: CSSProperties;\n  lineHeight?: number | string;\n  breakAll?: boolean;\n  children?: string | number;\n  maxLines?: number;\n}\n\nexport type Props = Omit<SVGProps<SVGTextElement>, 'textAnchor' | 'verticalAnchor'> & TextProps;\n\ninterface Words {\n  words: Array<string>;\n  width?: number;\n}\n\ntype CalculateWordsByLinesProps = Pick<Props, 'maxLines' | 'children' | 'style' | 'breakAll'>;\n\nconst calculateWordsByLines = (\n  { maxLines, children, style, breakAll }: CalculateWordsByLinesProps,\n  initialWordsWithComputedWith: Array<WordWithComputedWidth>,\n  spaceWidth: number,\n  lineWidth: number | string,\n  scaleToFit?: boolean,\n): Array<Words> => {\n  const shouldLimitLines = isNumber(maxLines);\n  const text = children as string;\n\n  const calculate = (words: Array<WordWithComputedWidth> = []) =>\n    words.reduce((result, { word, width }) => {\n      const currentLine = result[result.length - 1];\n\n      if (\n        currentLine &&\n        (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))\n      ) {\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        const newLine = { words: [word], width };\n        result.push(newLine);\n      }\n\n      return result;\n    }, []);\n\n  const originalResult = calculate(initialWordsWithComputedWith);\n\n  const findLongestLine = (words: Array<Words>): Words =>\n    words.reduce((a: Words, b: Words) => (a.width > b.width ? a : b));\n\n  if (!shouldLimitLines) {\n    return originalResult;\n  }\n\n  const suffix = '…';\n\n  const checkOverflow = (index: number): [boolean, Words[]] => {\n    const tempText = text.slice(0, index);\n\n    const words = calculateWordWidths({\n      breakAll,\n      style,\n      children: tempText + suffix,\n    }).wordsWithComputedWidth;\n\n    const result = calculate(words);\n\n    const doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n\n    return [doesOverflow, result];\n  };\n\n  let start = 0;\n  let end = text.length - 1;\n\n  let iterations = 0;\n  let trimmedResult;\n\n  while (start <= end && iterations <= text.length - 1) {\n    const middle = Math.floor((start + end) / 2);\n    const prev = middle - 1;\n\n    const [doesPrevOverflow, result] = checkOverflow(prev);\n    const [doesMiddleOverflow] = checkOverflow(middle);\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  }\n\n  // Fallback to originalResult (result without trimming) if we cannot find the\n  // where to trim.  This should not happen :tm:\n  return trimmedResult || originalResult;\n};\n\nconst getWordsWithoutCalculate = (children: React.ReactNode): Array<Words> => {\n  const words = !isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n  return [{ words }];\n};\n\ntype GetWordsByLinesProps = Pick<Props, 'width' | 'scaleToFit' | 'children' | 'style' | 'breakAll' | 'maxLines'>;\n\nconst getWordsByLines = ({ width, scaleToFit, children, style, breakAll, maxLines }: GetWordsByLinesProps) => {\n  // Only perform calculations if using features that require them (multiline, scaleToFit)\n  if ((width || scaleToFit) && !Global.isSsr) {\n    let wordsWithComputedWidth: Array<WordWithComputedWidth>, spaceWidth: number;\n\n    const wordWidths = calculateWordWidths({ breakAll, children, style });\n\n    if (wordWidths) {\n      const { wordsWithComputedWidth: wcw, spaceWidth: sw } = wordWidths;\n\n      wordsWithComputedWidth = wcw;\n      spaceWidth = sw;\n    } else {\n      return getWordsWithoutCalculate(children);\n    }\n\n    return calculateWordsByLines(\n      { breakAll, children, maxLines, style },\n      wordsWithComputedWidth,\n      spaceWidth,\n      width,\n      scaleToFit,\n    );\n  }\n  return getWordsWithoutCalculate(children);\n};\n\nconst DEFAULT_FILL = '#808080';\n\nexport const Text = ({\n  x: propsX = 0,\n  y: propsY = 0,\n  lineHeight = '1em',\n  // Magic number from d3\n  capHeight = '0.71em',\n  scaleToFit = false,\n  textAnchor = 'start',\n  // Maintain compat with existing charts / default SVG behavior\n  verticalAnchor = 'end',\n  fill = DEFAULT_FILL,\n  ...props\n}: Props) => {\n  const wordsByLines: Array<Words> = useMemo(() => {\n    return getWordsByLines({\n      breakAll: props.breakAll,\n      children: props.children,\n      maxLines: props.maxLines,\n      scaleToFit,\n      style: props.style,\n      width: props.width,\n    });\n  }, [props.breakAll, props.children, props.maxLines, scaleToFit, props.style, props.width]);\n\n  const { dx, dy, angle, className, breakAll, ...textProps } = props;\n\n  if (!isNumOrStr(propsX) || !isNumOrStr(propsY)) {\n    return null;\n  }\n  const x = (propsX as number) + (isNumber(dx as number) ? (dx as number) : 0);\n  const y = (propsY as number) + (isNumber(dy as number) ? (dy as number) : 0);\n\n  let startDy: string;\n  switch (verticalAnchor) {\n    case 'start':\n      startDy = reduceCSSCalc(`calc(${capHeight})`);\n      break;\n    case 'middle':\n      startDy = reduceCSSCalc(`calc(${(wordsByLines.length - 1) / 2} * -${lineHeight} + (${capHeight} / 2))`);\n      break;\n    default:\n      startDy = reduceCSSCalc(`calc(${wordsByLines.length - 1} * -${lineHeight})`);\n      break;\n  }\n\n  const transforms = [];\n  if (scaleToFit) {\n    const lineWidth = wordsByLines[0].width;\n    const { width } = props;\n    transforms.push(`scale(${(isNumber(width as number) ? (width as number) / lineWidth : 1) / lineWidth})`);\n  }\n  if (angle) {\n    transforms.push(`rotate(${angle}, ${x}, ${y})`);\n  }\n  if (transforms.length) {\n    textProps.transform = transforms.join(' ');\n  }\n\n  return (\n    <text\n      {...filterProps(textProps, true)}\n      x={x}\n      y={y}\n      className={clsx('recharts-text', className)}\n      textAnchor={textAnchor}\n      fill={fill.includes('url') ? DEFAULT_FILL : fill}\n    >\n      {wordsByLines.map((line, index) => {\n        const words = line.words.join(breakAll ? '' : ' ');\n        return (\n          // duplicate words will cause duplicate keys\n          // eslint-disable-next-line react/no-array-index-key\n          <tspan x={x} dy={index === 0 ? startDy : lineHeight} key={`${words}-${index}`}>\n            {words}\n          </tspan>\n        );\n      })}\n    </text>\n  );\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","export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\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","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 default function range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","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","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\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 exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\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, formatSpecifier} 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      : x => 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), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let 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 = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let 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; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\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; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\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    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let 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 = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\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","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f && f.length !== 2) || F.length > 1) {\n    const index = Uint32Array.from(values, (d, i) => i);\n    if (F.length > 1) {\n      F = F.map(f => values.map(f));\n      index.sort((i, j) => {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) => ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) => {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left <= k && k <= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n  if (isNaN(p = +p)) return;\n  numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n  if (p <= 0) return minIndex(numbers);\n  if (p >= 1) return maxIndex(numbers);\n  var numbers,\n      index = Uint32Array.from(values, (_, i) => i),\n      j = numbers.length - 1,\n      i = Math.floor(j * p);\n  quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n  i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n  return i >= 0 ? i : -1;\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","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(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 = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\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    let previous;\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 = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (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 = (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 = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\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 const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const 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 {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.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, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\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","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\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 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(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","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);","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n","/**\n * @fileOverview Render a group of error bar\n */\nimport React, { SVGProps } from 'react';\nimport invariant from 'tiny-invariant';\nimport { Layer } from '../container/Layer';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { D3Scale, DataKey } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { BarRectangleItem } from './Bar';\nimport { LinePointItem } from './Line';\nimport { ScatterPointItem } from './Scatter';\n\nexport interface ErrorBarDataItem {\n  x: number;\n  y: number;\n  value: number;\n  errorVal?: number[] | number;\n}\n\nexport type ErrorBarDataPointFormatter = (\n  entry: BarRectangleItem | LinePointItem | ScatterPointItem,\n  dataKey: DataKey<any>,\n) => ErrorBarDataItem;\n\ninterface InternalErrorBarProps {\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  data?: any[];\n  layout?: 'horizontal' | 'vertical';\n  dataPointFormatter?: ErrorBarDataPointFormatter;\n  /** The offset between central and the given coordinate, often set by <Bar/> */\n  offset?: number;\n}\n\ninterface ErrorBarProps extends InternalErrorBarProps {\n  dataKey: DataKey<any>;\n  /** the width of the error bar ends */\n  width?: number;\n  /**\n   * Only used for ScatterChart with error bars in two directions.\n   * Only accepts a value of \"x\" or \"y\" and makes the error bars lie in that direction.\n   */\n  direction?: 'x' | 'y';\n}\n\nexport type Props = SVGProps<SVGLineElement> & ErrorBarProps;\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ErrorBar extends React.Component<Props> {\n  static defaultProps = {\n    stroke: 'black',\n    strokeWidth: 1.5,\n    width: 5,\n    offset: 0,\n    layout: 'horizontal',\n  };\n\n  static displayName = 'ErrorBar';\n\n  render() {\n    const { offset, layout, width, dataKey, data, dataPointFormatter, xAxis, yAxis, ...others } = this.props;\n    const svgProps = filterProps(others, false);\n\n    invariant(\n      !(this.props.direction === 'x' && xAxis.type !== 'number'),\n      'ErrorBar requires Axis type property to be \"number\".',\n    );\n\n    const errorBars = data.map((entry: any) => {\n      const { x, y, value, errorVal } = dataPointFormatter(entry, dataKey);\n\n      if (!errorVal) {\n        return null;\n      }\n\n      const lineCoordinates = [];\n      let lowBound, highBound;\n\n      if (Array.isArray(errorVal)) {\n        [lowBound, highBound] = errorVal;\n      } else {\n        lowBound = highBound = errorVal;\n      }\n\n      if (layout === 'vertical') {\n        // error bar for horizontal charts, the y is fixed, x is a range value\n        const { scale } = xAxis;\n\n        const yMid = y + offset;\n        const yMin = yMid + width;\n        const yMax = yMid - width;\n\n        const xMin = scale(value - lowBound);\n        const xMax = scale(value + highBound);\n\n        // the right line of |--|\n        lineCoordinates.push({ x1: xMax, y1: yMin, x2: xMax, y2: yMax });\n        // the middle line of |--|\n        lineCoordinates.push({ x1: xMin, y1: yMid, x2: xMax, y2: yMid });\n        // the left line of |--|\n        lineCoordinates.push({ x1: xMin, y1: yMin, x2: xMin, y2: yMax });\n      } else if (layout === 'horizontal') {\n        // error bar for horizontal charts, the x is fixed, y is a range value\n        const { scale } = yAxis;\n\n        const xMid = x + offset;\n        const xMin = xMid - width;\n        const xMax = xMid + width;\n\n        const yMin = scale(value - lowBound);\n        const yMax = scale(value + highBound);\n\n        // the top line\n        lineCoordinates.push({ x1: xMin, y1: yMax, x2: xMax, y2: yMax });\n        // the middle line\n        lineCoordinates.push({ x1: xMid, y1: yMin, x2: xMid, y2: yMax });\n        // the bottom line\n        lineCoordinates.push({ x1: xMin, y1: yMin, x2: xMax, y2: yMin });\n      }\n\n      return (\n        <Layer\n          className=\"recharts-errorBar\"\n          key={`bar-${lineCoordinates.map(c => `${c.x1}-${c.x2}-${c.y1}-${c.y2}`)}`}\n          {...svgProps}\n        >\n          {lineCoordinates.map(coordinates => (\n            <line\n              {...coordinates}\n              key={`line-${coordinates.x1}-${coordinates.x2}-${coordinates.y1}-${coordinates.y2}`}\n            />\n          ))}\n        </Layer>\n      );\n    });\n\n    return <Layer className=\"recharts-errorBars\">{errorBars}</Layer>;\n  }\n}\n","import { ReactNode, ReactElement } from 'react';\nimport { Legend, Props as LegendProps } from '../component/Legend';\nimport { FormattedGraphicalItem, getMainColorOfGraphicItem } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { Payload as LegendPayload } from '../component/DefaultLegendContent';\n\ninterface SectorOrDataEntry {\n  name: any;\n  fill: any;\n}\n\nexport const getLegendProps = ({\n  children,\n  formattedGraphicalItems,\n  legendWidth,\n  legendContent,\n}: {\n  children: ReactNode[];\n  formattedGraphicalItems?: Array<FormattedGraphicalItem>;\n  legendWidth: number;\n  legendContent?: 'children';\n}): null | (LegendProps & { item: ReactElement }) => {\n  const legendItem = findChildByType(children, Legend);\n  if (!legendItem) {\n    return null;\n  }\n  const legendDefaultProps = Legend.defaultProps as LegendProps;\n  const legendProps: typeof legendItem.props =\n    legendDefaultProps !== undefined ? { ...legendDefaultProps, ...legendItem.props } : {};\n\n  let legendData: LegendPayload[];\n  if (legendItem.props && legendItem.props.payload) {\n    legendData = legendItem.props && legendItem.props.payload;\n  } else if (legendContent === 'children') {\n    legendData = (formattedGraphicalItems || []).reduce((result, { item, props }) => {\n      const data: ReadonlyArray<SectorOrDataEntry> = props.sectors || props.data || [];\n\n      return result.concat(\n        data.map((entry: SectorOrDataEntry) => ({\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 = (formattedGraphicalItems || []).map(({ item }): LegendPayload => {\n      const itemDefaultProps = (item.type as any).defaultProps;\n      const itemProps: typeof item.props = itemDefaultProps !== undefined ? { ...itemDefaultProps, ...item.props } : {};\n      const { dataKey, name, legendType, hide } = itemProps;\n\n      return {\n        inactive: hide,\n        dataKey,\n        type: legendProps.iconType || legendType || 'square',\n        color: getMainColorOfGraphicItem(item),\n        value: name || dataKey,\n        // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n        payload: itemProps,\n      };\n    });\n  }\n\n  return {\n    ...legendProps,\n    ...Legend.getWithHeight(legendItem, legendWidth),\n    payload: legendData,\n    item: legendItem,\n  };\n};\n","import * as d3Scales from 'victory-vendor/d3-scale';\nimport {\n  Series,\n  stack as shapeStack,\n  stackOffsetExpand,\n  stackOffsetNone,\n  stackOffsetSilhouette,\n  stackOffsetWiggle,\n  stackOrderNone,\n} from 'victory-vendor/d3-shape';\nimport max from 'lodash/max';\nimport min from 'lodash/min';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport get from 'lodash/get';\nimport flatMap from 'lodash/flatMap';\nimport isNan from 'lodash/isNaN';\nimport upperFirst from 'lodash/upperFirst';\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\n\nimport { ReactElement, ReactNode } from 'react';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\n\nimport { ErrorBar } from '../cartesian/ErrorBar';\nimport { findEntryInArray, getPercentValue, isNumber, isNumOrStr, mathSign, uniqueId } from './DataUtils';\nimport { filterProps, findAllByType, getDisplayName } from './ReactUtils';\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\nimport {\n  AxisType,\n  BaseAxisProps,\n  DataKey,\n  LayoutType,\n  LegendType,\n  PolarLayoutType,\n  NumberDomain,\n  TickItem,\n  CategoricalDomain,\n  StackOffsetType,\n  Margin,\n  ChartOffset,\n} from './types';\nimport { getLegendProps } from './getLegendProps';\n\n// Exported for backwards compatibility\nexport { getLegendProps };\n\nexport function getValueByDataKey<T>(obj: T, dataKey: DataKey<T>, defaultValue?: any) {\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 */\nexport function getDomainOfDataByKey<T>(\n  data: Array<T>,\n  key: DataKey<T>,\n  type: BaseAxisProps['type'],\n  filterNil?: boolean,\n): NumberDomain | CategoricalDomain {\n  const flattenData: unknown[] = flatMap(data, (entry: T): unknown => getValueByDataKey(entry, key));\n\n  if (type === 'number') {\n    // @ts-expect-error parseFloat type only accepts strings\n    const domain: number[] = flattenData.filter(entry => isNumber(entry) || parseFloat(entry));\n\n    return domain.length ? [min(domain), max(domain)] : [Infinity, -Infinity];\n  }\n\n  const validateData = filterNil ? flattenData.filter(entry => !isNil(entry)) : flattenData;\n\n  // Supports x-axis of Date type\n  return validateData.map(entry => (isNumOrStr(entry) || entry instanceof Date ? entry : ''));\n}\n\nexport const calculateActiveTickIndex = (\n  coordinate: number,\n  ticks: Array<TickItem> = [],\n  unsortedTicks?: Array<TickItem>,\n  axis?: BaseAxisProps,\n) => {\n  let index = -1;\n  const len = ticks?.length ?? 0;\n\n  // if there are 1 or less ticks ticks then the active tick is at index 0\n  if (len <= 1) {\n    return 0;\n  }\n\n  if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n    const { range } = axis;\n    // ticks are distributed in a circle\n    for (let i = 0; i < len; i++) {\n      const before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n      const cur = unsortedTicks[i].coordinate;\n      const after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n      let sameDirectionCoord;\n\n      if (mathSign(cur - before) !== mathSign(after - cur)) {\n        const diffInterval = [];\n        if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n          sameDirectionCoord = after;\n\n          const 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\n          const 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        const sameInterval = [\n          Math.min(cur, (sameDirectionCoord + cur) / 2),\n          Math.max(cur, (sameDirectionCoord + cur) / 2),\n        ];\n\n        if (\n          (coordinate > sameInterval[0] && coordinate <= sameInterval[1]) ||\n          (coordinate >= diffInterval[0] && coordinate <= diffInterval[1])\n        ) {\n          ({ index } = unsortedTicks[i]);\n          break;\n        }\n      } else {\n        const minValue = Math.min(before, after);\n        const maxValue = Math.max(before, after);\n\n        if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n          ({ index } = unsortedTicks[i]);\n          break;\n        }\n      }\n    }\n  } else {\n    // ticks are distributed in a single direction\n    for (let i = 0; i < len; i++) {\n      if (\n        (i === 0 && coordinate <= (ticks[i].coordinate + ticks[i + 1].coordinate) / 2) ||\n        (i > 0 &&\n          i < len - 1 &&\n          coordinate > (ticks[i].coordinate + ticks[i - 1].coordinate) / 2 &&\n          coordinate <= (ticks[i].coordinate + ticks[i + 1].coordinate) / 2) ||\n        (i === len - 1 && coordinate > (ticks[i].coordinate + ticks[i - 1].coordinate) / 2)\n      ) {\n        ({ index } = ticks[i]);\n        break;\n      }\n    }\n  }\n\n  return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param  {ReactElement} item A graphic item\n * @return {String}            Color\n */\nexport const getMainColorOfGraphicItem = (item: ReactElement) => {\n  const {\n    type: { displayName },\n  } = item as any; // TODO: check if displayName is valid.\n  const defaultedProps = (item.type as any)?.defaultProps\n    ? { ...(item.type as any).defaultProps, ...item.props }\n    : item.props;\n  const { stroke, fill } = defaultedProps;\n  let result;\n\n  switch (displayName) {\n    case 'Line':\n      result = stroke;\n      break;\n    case 'Area':\n    case 'Radar':\n      result = stroke && stroke !== 'none' ? stroke : fill;\n      break;\n    default:\n      result = fill;\n      break;\n  }\n\n  return result;\n};\n\nexport interface FormattedGraphicalItem {\n  props: {\n    sectors?: ReadonlyArray<any>;\n    data?: ReadonlyArray<any>;\n  };\n  childIndex: number;\n  item: ReactElement<{ legendType?: LegendType; hide: boolean; name?: string; dataKey: DataKey<any> }>;\n}\n\nexport type BarSetup = {\n  barSize: number | string;\n  stackList: ReadonlyArray<ReactElement>;\n  item: ReactElement;\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 */\nexport const getBarSizeList = ({\n  barSize: globalSize,\n  totalSize,\n  stackGroups = {},\n}: {\n  barSize: number | string;\n  stackGroups: AxisStackGroups;\n  totalSize: number;\n}): Record<string, ReadonlyArray<BarSetup>> => {\n  if (!stackGroups) {\n    return {};\n  }\n\n  const result: Record<string, Array<BarSetup>> = {};\n  const numericAxisIds = Object.keys(stackGroups);\n\n  for (let i = 0, len = numericAxisIds.length; i < len; i++) {\n    const sgs = stackGroups[numericAxisIds[i]].stackGroups;\n    const stackIds = Object.keys(sgs);\n\n    for (let j = 0, sLen = stackIds.length; j < sLen; j++) {\n      const { items, cateAxisId } = sgs[stackIds[j]];\n\n      const barItems = items.filter(item => getDisplayName(item.type).indexOf('Bar') >= 0);\n\n      if (barItems && barItems.length) {\n        const barItemDefaultProps = (barItems[0].type as any).defaultProps;\n        const barItemProps =\n          barItemDefaultProps !== undefined ? { ...barItemDefaultProps, ...barItems[0].props } : barItems[0].props;\n        const { barSize: selfSize } = barItemProps;\n        const cateId = barItemProps[cateAxisId];\n\n        if (!result[cateId]) {\n          result[cateId] = [];\n        }\n\n        const barSize: string | number | undefined = isNil(selfSize) ? globalSize : selfSize;\n\n        result[cateId].push({\n          item: barItems[0],\n          stackList: barItems.slice(1),\n          barSize: isNil(barSize) ? undefined : getPercentValue(barSize, totalSize, 0),\n        });\n      }\n    }\n  }\n\n  return result;\n};\n\nexport type BarPosition = {\n  item: ReactElement;\n  position: {\n    /**\n     * Offset is returned always from zero position.\n     * So in a way it's \"absolute\".\n     *\n     * NOT inbetween bars, but always from zero.\n     */\n    offset: number;\n    /**\n     * Size of the bar.\n     * This will be usually a number.\n     * But if the input data is not well formed, undefined or NaN will be on the output too.\n     */\n    size: number | undefined | typeof NaN;\n  };\n};\n\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param  {number} bandSize is the size of area where bars can render\n * @param  {number | string} barGap is the gap size, as a percentage of `bandSize`.\n *                                  Can be defined as number or percent string\n * @param  {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n *                                  Can be defined as number or percent string\n * @param  {Array<object>} sizeList Sizes of all groups\n * @param  {number} maxBarSize The maximum size of each bar\n * @return {Array<object>} The size and offset of each bar\n */\nexport const getBarPosition = ({\n  barGap,\n  barCategoryGap,\n  bandSize,\n  sizeList = [],\n  maxBarSize,\n}: {\n  barGap: string | number;\n  barCategoryGap: string | number;\n  bandSize: number;\n  sizeList: ReadonlyArray<BarSetup>;\n  maxBarSize: number;\n}): ReadonlyArray<BarPosition> => {\n  const len = sizeList.length;\n  if (len < 1) return null;\n\n  let realBarGap = getPercentValue(barGap, bandSize, 0, true);\n  let result: ReadonlyArray<BarPosition>;\n  const initialValue: ReadonlyArray<BarPosition> = [];\n\n  // whether or not is barSize setted by user\n  if (sizeList[0].barSize === +sizeList[0].barSize) {\n    let useFull = false;\n    let fullBarSize = bandSize / len;\n    // @ts-expect-error the type check above does not check for type number explicitly\n    let sum = sizeList.reduce((res, entry) => res + entry.barSize || 0, 0);\n    sum += (len - 1) * realBarGap;\n\n    if (sum >= bandSize) {\n      sum -= (len - 1) * realBarGap;\n      realBarGap = 0;\n    }\n    if (sum >= bandSize && fullBarSize > 0) {\n      useFull = true;\n      fullBarSize *= 0.9;\n      sum = len * fullBarSize;\n    }\n\n    const offset = ((bandSize - sum) / 2) >> 0;\n    let prev: BarPosition['position'] = { offset: offset - realBarGap, size: 0 };\n\n    result = sizeList.reduce((res, entry) => {\n      const newPosition: BarPosition = {\n        item: entry.item,\n        position: {\n          offset: prev.offset + prev.size + realBarGap,\n          // @ts-expect-error the type check above does not check for type number explicitly\n          size: useFull ? fullBarSize : entry.barSize,\n        },\n      };\n      const newRes: Array<BarPosition> = [...res, newPosition];\n\n      prev = newRes[newRes.length - 1].position;\n\n      if (entry.stackList && entry.stackList.length) {\n        entry.stackList.forEach(item => {\n          newRes.push({ item, position: prev });\n        });\n      }\n      return newRes;\n    }, initialValue);\n  } else {\n    const offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n    if (bandSize - 2 * offset - (len - 1) * realBarGap <= 0) {\n      realBarGap = 0;\n    }\n\n    let originalSize = (bandSize - 2 * offset - (len - 1) * realBarGap) / len;\n    if (originalSize > 1) {\n      originalSize >>= 0;\n    }\n    const size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n\n    result = sizeList.reduce((res, entry, i) => {\n      const newRes = [\n        ...res,\n        {\n          item: entry.item,\n          position: {\n            offset: offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n            size,\n          },\n        },\n      ];\n\n      if (entry.stackList && entry.stackList.length) {\n        entry.stackList.forEach(item => {\n          newRes.push({ item, position: newRes[newRes.length - 1].position });\n        });\n      }\n      return newRes;\n    }, initialValue);\n  }\n\n  return result;\n};\n\nexport const appendOffsetOfLegend = (\n  offset: ChartOffset,\n  _unused: unknown,\n  props: {\n    width?: number;\n    margin: Margin;\n    children?: ReactNode[];\n  },\n  legendBox: DOMRect | null,\n): ChartOffset => {\n  const { children, width, margin } = props;\n  const legendWidth = width - (margin.left || 0) - (margin.right || 0);\n  const legendProps = getLegendProps({ children, legendWidth });\n  if (legendProps) {\n    const { width: boxWidth, height: boxHeight } = legendBox || {};\n    const { align, verticalAlign, layout } = legendProps;\n\n    if (\n      (layout === 'vertical' || (layout === 'horizontal' && verticalAlign === 'middle')) &&\n      align !== 'center' &&\n      isNumber(offset[align])\n    ) {\n      return { ...offset, [align]: offset[align] + (boxWidth || 0) };\n    }\n\n    if (\n      (layout === 'horizontal' || (layout === 'vertical' && align === 'center')) &&\n      verticalAlign !== 'middle' &&\n      isNumber(offset[verticalAlign])\n    ) {\n      return { ...offset, [verticalAlign]: offset[verticalAlign] + (boxHeight || 0) };\n    }\n  }\n\n  return offset;\n};\n\nconst isErrorBarRelevantForAxis = (layout?: LayoutType, axisType?: AxisType, direction?: 'x' | 'y'): boolean => {\n  if (isNil(axisType)) {\n    return true;\n  }\n\n  if (layout === 'horizontal') {\n    return axisType === 'yAxis';\n  }\n  if (layout === 'vertical') {\n    return axisType === 'xAxis';\n  }\n\n  if (direction === 'x') {\n    return axisType === 'xAxis';\n  }\n  if (direction === 'y') {\n    return axisType === 'yAxis';\n  }\n\n  return true;\n};\n\nexport const getDomainOfErrorBars = (\n  data: Array<object>,\n  item: ReactElement,\n  dataKey: DataKey<any>,\n  layout?: LayoutType,\n  axisType?: AxisType,\n): NumberDomain | null => {\n  const { children } = item.props;\n  const errorBars = findAllByType(children, ErrorBar).filter(errorBarChild =>\n    isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction),\n  );\n\n  if (errorBars && errorBars.length) {\n    const keys: ReadonlyArray<DataKey<any>> = errorBars.map(errorBarChild => errorBarChild.props.dataKey);\n\n    return data.reduce<NumberDomain>(\n      (result: NumberDomain, entry: object): NumberDomain => {\n        const entryValue = getValueByDataKey(entry, dataKey);\n        if (isNil(entryValue)) return result;\n\n        const mainValue = Array.isArray(entryValue) ? [min(entryValue), max(entryValue)] : [entryValue, entryValue];\n        const errorDomain = keys.reduce(\n          (prevErrorArr: [number, number], k: DataKey<any>): NumberDomain => {\n            const errorValue = getValueByDataKey(entry, k, 0);\n            const lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n            const upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n\n            return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n          },\n          [Infinity, -Infinity],\n        );\n\n        return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n      },\n      [Infinity, -Infinity],\n    );\n  }\n\n  return null;\n};\n\nexport const parseErrorBarsOfAxis = (\n  data: any[],\n  items: any[],\n  dataKey: any,\n  axisType: AxisType,\n  layout?: LayoutType,\n): NumberDomain | null => {\n  const domains = items\n    .map(item => getDomainOfErrorBars(data, item, dataKey, layout, axisType))\n    .filter(entry => !isNil(entry));\n\n  if (domains && domains.length) {\n    return domains.reduce(\n      (result, entry) => [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])],\n      [Infinity, -Infinity],\n    );\n  }\n\n  return null;\n};\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  {LayoutType} layout The type of layout\n * @param  {Boolean} filterNil Whether or not filter nil values\n * @return {Array}        Domain\n */\nexport const getDomainOfItemsWithSameAxis = (\n  data: any[],\n  items: ReactElement[],\n  type: BaseAxisProps['type'],\n  layout?: LayoutType,\n  filterNil?: boolean,\n) => {\n  const domains: (NumberDomain | CategoricalDomain | null)[] = items.map(item => {\n    const { dataKey } = item.props;\n\n    if (type === 'number' && dataKey) {\n      return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\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(\n      // @ts-expect-error if (type === number) means that the domain is numerical type\n      // - but this link is missing in the type definition\n      (result, entry) => [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])],\n      [Infinity, -Infinity],\n    );\n  }\n\n  const tag: Record<string, any> = {};\n  // Get the union set of category axis\n  return domains.reduce((result, entry) => {\n    for (let i = 0, len = entry.length; i < len; i++) {\n      // @ts-expect-error Date cannot index an object\n      if (!tag[entry[i]]) {\n        // @ts-expect-error Date cannot index an object\n        tag[entry[i]] = true;\n\n        // @ts-expect-error Date cannot index an object\n        result.push(entry[i]);\n      }\n    }\n    return result;\n  }, []);\n};\n\nexport const isCategoricalAxis = (layout: LayoutType | PolarLayoutType, axisType: AxisType) =>\n  (layout === 'horizontal' && axisType === 'xAxis') ||\n  (layout === 'vertical' && axisType === 'yAxis') ||\n  (layout === 'centric' && axisType === 'angleAxis') ||\n  (layout === 'radial' && axisType === 'radiusAxis');\n\n/**\n * Calculate the Coordinates of grid\n * @param  {Array} ticks           The ticks in axis\n * @param {Number} minValue        The minimun value of axis\n * @param {Number} maxValue        The maximun value of axis\n * @param {boolean} syncWithTicks  Synchronize grid lines with ticks or not\n * @return {Array}                 Coordinates\n */\nexport const getCoordinatesOfGrid = (\n  ticks: Array<TickItem>,\n  minValue: number,\n  maxValue: number,\n  syncWithTicks: Boolean,\n) => {\n  if (syncWithTicks) {\n    return ticks.map(entry => entry.coordinate);\n  }\n\n  let hasMin, hasMax;\n\n  const values = ticks.map(entry => {\n    if (entry.coordinate === minValue) {\n      hasMin = true;\n    }\n    if (entry.coordinate === maxValue) {\n      hasMax = true;\n    }\n\n    return entry.coordinate;\n  });\n\n  if (!hasMin) {\n    values.push(minValue);\n  }\n  if (!hasMax) {\n    values.push(maxValue);\n  }\n\n  return values;\n};\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 */\nexport const getTicksOfAxis = (\n  axis: BaseAxisProps & {\n    duplicateDomain?: any;\n    realScaleType?: 'scaleBand' | 'band' | 'point' | 'linear';\n    scale?: any;\n    axisType?: AxisType;\n    ticks?: any;\n    niceTicks?: any;\n    isCategorical?: boolean;\n    categoricalDomain?: any;\n  },\n  isGrid?: boolean,\n  isAll?: boolean,\n): TickItem[] | null => {\n  if (!axis) return null;\n  const { scale } = axis;\n  const { duplicateDomain, type, range } = axis;\n\n  const offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n  let offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n\n  offset = axis.axisType === 'angleAxis' && range?.length >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n  // The ticks set by user should only affect the ticks adjacent to axis line\n  if (isGrid && (axis.ticks || axis.niceTicks)) {\n    const result = (axis.ticks || axis.niceTicks).map((entry: TickItem) => {\n      const scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n\n      return {\n        // If the scaleContent is not a number, the coordinate will be NaN.\n        // That could be the case for example with a PointScale and a string as domain.\n        coordinate: scale(scaleContent) + offset,\n        value: entry,\n        offset,\n      };\n    });\n\n    return result.filter((row: TickItem) => !isNan(row.coordinate));\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  if (axis.isCategorical && axis.categoricalDomain) {\n    return axis.categoricalDomain.map((entry: any, index: number) => ({\n      coordinate: scale(entry) + offset,\n      value: entry,\n      index,\n      offset,\n    }));\n  }\n\n  if (scale.ticks && !isAll) {\n    return scale\n      .ticks(axis.tickCount)\n      .map((entry: any) => ({ coordinate: scale(entry) + offset, value: entry, offset }));\n  }\n\n  // When axis has duplicated text, serial numbers are used to generate scale\n  return scale.domain().map((entry: any, index: number) => ({\n    coordinate: scale(entry) + offset,\n    value: duplicateDomain ? duplicateDomain[entry] : entry,\n    index,\n    offset,\n  }));\n};\n\n/**\n * combine the handlers\n * @param  {Function} defaultHandler Internal private handler\n * @param  {Function} childHandler Handler function specified in child component\n * @return {Function}                The combined handler\n */\n\nconst handlerWeakMap = new WeakMap();\nexport const combineEventHandlers = (defaultHandler: Function, childHandler: Function | undefined): Function => {\n  if (typeof childHandler !== 'function') {\n    return defaultHandler;\n  }\n\n  if (!handlerWeakMap.has(defaultHandler)) {\n    handlerWeakMap.set(defaultHandler, new WeakMap());\n  }\n  const childWeakMap = handlerWeakMap.get(defaultHandler);\n\n  if (childWeakMap.has(childHandler)) {\n    return childWeakMap.get(childHandler);\n  }\n\n  const combineHandler = (...args: any[]) => {\n    defaultHandler(...args);\n    childHandler(...args);\n  };\n\n  childWeakMap.set(childHandler, combineHandler);\n  return combineHandler;\n};\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 {object}               The scale function and resolved name\n */\nexport const parseScale = (\n  axis: {\n    scale: 'auto' | string | Function;\n    type?: BaseAxisProps['type'];\n    layout?: 'radial' | unknown;\n    axisType?: 'radiusAxis' | 'angleAxis' | unknown;\n  },\n  chartType?: string,\n  hasBar?: boolean,\n): { scale: any; realScaleType?: string } => {\n  const { scale, type, layout, axisType } = axis;\n  if (scale === 'auto') {\n    if (layout === 'radial' && axisType === 'radiusAxis') {\n      return { scale: d3Scales.scaleBand(), realScaleType: 'band' };\n    }\n    if (layout === 'radial' && axisType === 'angleAxis') {\n      return { scale: d3Scales.scaleLinear(), realScaleType: 'linear' };\n    }\n\n    if (\n      type === 'category' &&\n      chartType &&\n      (chartType.indexOf('LineChart') >= 0 ||\n        chartType.indexOf('AreaChart') >= 0 ||\n        (chartType.indexOf('ComposedChart') >= 0 && !hasBar))\n    ) {\n      return { scale: d3Scales.scalePoint(), realScaleType: 'point' };\n    }\n    if (type === 'category') {\n      return { scale: d3Scales.scaleBand(), realScaleType: 'band' };\n    }\n\n    return { scale: d3Scales.scaleLinear(), realScaleType: 'linear' };\n  }\n  if (isString(scale)) {\n    const name = `scale${upperFirst(scale)}`;\n\n    return {\n      scale: ((d3Scales as Record<string, any>)[name] || d3Scales.scalePoint)(),\n      realScaleType: (d3Scales as Record<string, any>)[name] ? name : 'point',\n    };\n  }\n\n  return isFunction(scale) ? { scale } : { scale: d3Scales.scalePoint(), realScaleType: 'point' };\n};\nconst EPS = 1e-4;\nexport const checkDomainOfScale = (scale: any) => {\n  const domain = scale.domain();\n\n  if (!domain || domain.length <= 2) {\n    return;\n  }\n\n  const len = domain.length;\n  const range = scale.range();\n  const minValue = Math.min(range[0], range[1]) - EPS;\n  const maxValue = Math.max(range[0], range[1]) + EPS;\n  const first = scale(domain[0]);\n  const last = scale(domain[len - 1]);\n\n  if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n    scale.domain([domain[0], domain[len - 1]]);\n  }\n};\n\nexport const findPositionOfBar = (barPosition: any[], child: ReactNode) => {\n  if (!barPosition) {\n    return null;\n  }\n\n  for (let 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};\n\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */\nexport const truncateByDomain = (value: [number, number], domain: number[]) => {\n  if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n    return value;\n  }\n\n  const minValue = Math.min(domain[0], domain[1]);\n  const maxValue = Math.max(domain[0], domain[1]);\n\n  const result = [value[0], value[1]];\n  if (!isNumber(value[0]) || value[0] < minValue) {\n    result[0] = minValue;\n  }\n\n  if (!isNumber(value[1]) || value[1] > maxValue) {\n    result[1] = maxValue;\n  }\n\n  if (result[0] > maxValue) {\n    result[0] = maxValue;\n  }\n\n  if (result[1] < minValue) {\n    result[1] = minValue;\n  }\n\n  return result;\n};\n\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport const offsetSign: OffsetAccessor = series => {\n  const n = series.length;\n  if (n <= 0) {\n    return;\n  }\n\n  for (let j = 0, m = series[0].length; j < m; ++j) {\n    let positive = 0;\n    let negative = 0;\n\n    for (let i = 0; i < n; ++i) {\n      const value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n      /* eslint-disable prefer-destructuring, no-param-reassign */\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, no-param-reassign */\n    }\n  }\n};\n\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport const offsetPositive: OffsetAccessor = series => {\n  const n = series.length;\n  if (n <= 0) {\n    return;\n  }\n\n  for (let j = 0, m = series[0].length; j < m; ++j) {\n    let positive = 0;\n\n    for (let i = 0; i < n; ++i) {\n      const value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n      /* eslint-disable prefer-destructuring, no-param-reassign */\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, no-param-reassign */\n    }\n  }\n};\n\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array<Series<>>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */\ntype OffsetAccessor = (series: Array<Series<Record<string, unknown>, string>>, order: number[]) => void;\n\nconst STACK_OFFSET_MAP: Record<string, OffsetAccessor> = {\n  sign: offsetSign,\n  // @ts-expect-error definitelytyped types are incorrect\n  expand: stackOffsetExpand,\n  // @ts-expect-error definitelytyped types are incorrect\n  none: stackOffsetNone,\n  // @ts-expect-error definitelytyped types are incorrect\n  silhouette: stackOffsetSilhouette,\n  // @ts-expect-error definitelytyped types are incorrect\n  wiggle: stackOffsetWiggle,\n  positive: offsetPositive,\n};\n\nexport const getStackedData = (\n  data: ReadonlyArray<Record<string, unknown>>,\n  stackItems: ReadonlyArray<{ props: { dataKey?: DataKey<any> } }>,\n  offsetType: StackOffsetType,\n): ReadonlyArray<Series<Record<string, unknown>, string>> => {\n  const dataKeys = stackItems.map(item => item.props.dataKey);\n  const offsetAccessor: OffsetAccessor = STACK_OFFSET_MAP[offsetType];\n  const stack = shapeStack<Record<string, unknown>>()\n    // @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n    .keys(dataKeys)\n    .value((d, key) => +getValueByDataKey(d, key, 0))\n    .order(stackOrderNone)\n    // @ts-expect-error definitelytyped types are incorrect\n    .offset(offsetAccessor);\n\n  return stack(data);\n};\n\ntype AxisId = string;\nexport type StackId = string | number | symbol;\n\nexport type ParentStackGroup = {\n  hasStack: boolean;\n  stackGroups: Record<StackId, ChildStackGroup>;\n};\n\nexport type GenericChildStackGroup<T> = {\n  numericAxisId: string;\n  cateAxisId: string;\n  items: Array<ReactElement>;\n  stackedData?: ReadonlyArray<T>;\n};\n\nexport type ChildStackGroup = GenericChildStackGroup<Series<Record<string, unknown>, string>>;\n\nexport type AxisStackGroups = Record<AxisId, ParentStackGroup>;\n\nexport const getStackGroupsByAxisId = (\n  data: ReadonlyArray<Record<string, unknown>> | undefined,\n  _items: Array<ReactElement>,\n  numericAxisId: string,\n  cateAxisId: string,\n  offsetType: StackOffsetType,\n  reverseStackOrder: boolean,\n): AxisStackGroups => {\n  if (!data) {\n    return null;\n  }\n\n  // reversing items to affect render order (for layering)\n  const items = reverseStackOrder ? _items.reverse() : _items;\n\n  const parentStackGroupsInitialValue: Record<AxisId, ParentStackGroup> = {};\n\n  const stackGroups: Record<AxisId, ParentStackGroup> = items.reduce((result, item) => {\n    const defaultedProps = (item.type as any)?.defaultProps\n      ? { ...(item.type as any).defaultProps, ...item.props }\n      : item.props;\n    const { stackId, hide } = defaultedProps;\n\n    if (hide) {\n      return result;\n    }\n\n    const axisId: AxisId = defaultedProps[numericAxisId];\n    const parentGroup: ParentStackGroup = result[axisId] || { hasStack: false, stackGroups: {} };\n\n    if (isNumOrStr(stackId)) {\n      const childGroup: ChildStackGroup = parentGroup.stackGroups[stackId] || {\n        numericAxisId,\n        cateAxisId,\n        items: [],\n      };\n\n      childGroup.items.push(item);\n\n      parentGroup.hasStack = true;\n\n      parentGroup.stackGroups[stackId] = childGroup;\n    } else {\n      parentGroup.stackGroups[uniqueId('_stackId_')] = {\n        numericAxisId,\n        cateAxisId,\n        items: [item],\n      };\n    }\n\n    return { ...result, [axisId]: parentGroup };\n  }, parentStackGroupsInitialValue);\n\n  const axisStackGroupsInitialValue: AxisStackGroups = {};\n\n  return Object.keys(stackGroups).reduce((result, axisId) => {\n    const group = stackGroups[axisId];\n\n    if (group.hasStack) {\n      const stackGroupsInitialValue: Record<StackId, ChildStackGroup> = {};\n      group.stackGroups = Object.keys(group.stackGroups).reduce((res, stackId) => {\n        const g = group.stackGroups[stackId];\n\n        return {\n          ...res,\n          [stackId]: {\n            numericAxisId,\n            cateAxisId,\n            items: g.items,\n            stackedData: getStackedData(data, g.items, offsetType),\n          },\n        };\n      }, stackGroupsInitialValue);\n    }\n\n    return { ...result, [axisId]: group };\n  }, axisStackGroupsInitialValue);\n};\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 */\nexport const getTicksOfScale = (scale: any, opts: any) => {\n  const { realScaleType, type, tickCount, originalDomain, allowDecimals } = opts;\n  const scaleType = realScaleType || opts.scale;\n\n  if (scaleType !== 'auto' && scaleType !== 'linear') {\n    return null;\n  }\n\n  if (\n    tickCount &&\n    type === 'number' &&\n    originalDomain &&\n    (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')\n  ) {\n    // Calculate the ticks by the number of grid when the axis is a number axis\n    const domain = scale.domain();\n    if (!domain.length) {\n      return null;\n    }\n    const tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n\n    scale.domain([min(tickValues), max(tickValues)]);\n\n    return { niceTicks: tickValues };\n  }\n  if (tickCount && type === 'number') {\n    const domain = scale.domain();\n    const tickValues = getTickValuesFixedDomain(domain, tickCount, allowDecimals);\n\n    return { niceTicks: tickValues };\n  }\n\n  return null;\n};\n\nexport function getCateCoordinateOfLine<T extends Record<string, unknown>>({\n  axis,\n  ticks,\n  bandSize,\n  entry,\n  index,\n  dataKey,\n}: {\n  axis: {\n    dataKey?: DataKey<T>;\n    allowDuplicatedCategory?: boolean;\n    type?: BaseAxisProps['type'];\n    scale: (v: number) => number;\n  };\n  ticks: Array<TickItem>;\n  bandSize: number;\n  entry: T;\n  index: number;\n  dataKey?: DataKey<T>;\n}): number | null {\n  if (axis.type === 'category') {\n    // find coordinate of category axis by the value of category\n    // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n    if (!axis.allowDuplicatedCategory && axis.dataKey && !isNil(entry[axis.dataKey])) {\n      // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n      const 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  const value = getValueByDataKey(entry, !isNil(dataKey) ? dataKey : axis.dataKey);\n\n  return !isNil(value) ? axis.scale(value) : null;\n}\n\nexport const getCateCoordinateOfBar = ({\n  axis,\n  ticks,\n  offset,\n  bandSize,\n  entry,\n  index,\n}: {\n  axis: any; // RadiusAxisProps & { dataKey?: any }; // TODO: should dataKey be included in RadiusAxisProps?\n  ticks: Array<TickItem>;\n  offset: any;\n  bandSize: number;\n  entry: any;\n  index: number;\n}) => {\n  if (axis.type === 'category') {\n    return ticks[index] ? ticks[index].coordinate + offset : null;\n  }\n  const value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n\n  return !isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\n\nexport const getBaseValueOfBar = ({\n  numericAxis,\n}: {\n  numericAxis: any; // AngleAxisProps | RadiusAxisProps\n}) => {\n  const domain = numericAxis.scale.domain();\n\n  if (numericAxis.type === 'number') {\n    const minValue = Math.min(domain[0], domain[1]);\n    const maxValue = Math.max(domain[0], domain[1]);\n\n    if (minValue <= 0 && maxValue >= 0) {\n      return 0;\n    }\n    if (maxValue < 0) {\n      return maxValue;\n    }\n\n    return minValue;\n  }\n\n  return domain[0];\n};\n\nexport const getStackedDataOfItem = <StackedData>(\n  item: ReactElement,\n  stackGroups: Record<StackId, GenericChildStackGroup<StackedData>>,\n): StackedData | null => {\n  const defaultedProps = (item.type as any)?.defaultProps\n    ? { ...(item.type as any).defaultProps, ...item.props }\n    : item.props;\n  const { stackId } = defaultedProps;\n\n  if (isNumOrStr(stackId)) {\n    const group = stackGroups[stackId];\n\n    if (group) {\n      const itemIndex = group.items.indexOf(item);\n      return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n    }\n  }\n\n  return null;\n};\n\nconst getDomainOfSingle = (data: Array<Array<any>>): number[] =>\n  data.reduce(\n    (result: number[], entry: Array<any>): number[] => [\n      min(entry.concat([result[0]]).filter(isNumber)),\n      max(entry.concat([result[1]]).filter(isNumber)),\n    ],\n    [Infinity, -Infinity],\n  );\n\nexport const getDomainOfStackGroups = (\n  stackGroups: Record<StackId, ChildStackGroup>,\n  startIndex: number,\n  endIndex: number,\n) =>\n  Object.keys(stackGroups)\n    .reduce(\n      (result, stackId) => {\n        const group = stackGroups[stackId];\n        const { stackedData } = group;\n        const domain = stackedData.reduce(\n          (res: [number, number], entry) => {\n            const s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n\n            return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n          },\n          [Infinity, -Infinity],\n        );\n\n        return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n      },\n      [Infinity, -Infinity],\n    )\n    .map(result => (result === Infinity || result === -Infinity ? 0 : result));\n\nexport const MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport const MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\n\nexport const parseSpecifiedDomain = (specifiedDomain: any, dataDomain: any, allowDataOverflow?: boolean) => {\n  if (isFunction(specifiedDomain)) {\n    return specifiedDomain(dataDomain, allowDataOverflow);\n  }\n\n  if (!Array.isArray(specifiedDomain)) {\n    return dataDomain;\n  }\n\n  const domain = [];\n\n  /* eslint-disable prefer-destructuring */\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    const value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n\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    const 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  return domain;\n};\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 */\nexport const getBandSizeOfAxis = (\n  axis?: BaseAxisProps,\n  ticks?: Array<TickItem>,\n  isBar?: boolean,\n): number | undefined => {\n  // @ts-expect-error we need to rethink scale type\n  if (axis && axis.scale && axis.scale.bandwidth) {\n    // @ts-expect-error we need to rethink scale type\n    const bandWidth = axis.scale.bandwidth();\n\n    if (!isBar || bandWidth > 0) {\n      return bandWidth;\n    }\n  }\n\n  if (axis && ticks && ticks.length >= 2) {\n    const orderedTicks = sortBy(ticks, o => o.coordinate);\n    let bandSize = Infinity;\n\n    for (let i = 1, len = orderedTicks.length; i < len; i++) {\n      const cur = orderedTicks[i];\n      const prev = orderedTicks[i - 1];\n\n      bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n    }\n\n    return bandSize === Infinity ? 0 : bandSize;\n  }\n\n  return isBar ? undefined : 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 ReactElement\n * @returns {Array}        domains\n */\nexport const parseDomainOfCategoryAxis = <T>(\n  specifiedDomain: ReadonlyArray<T> | undefined,\n  calculatedDomain: ReadonlyArray<T>,\n  axisChild: ReactElement,\n): ReadonlyArray<T> => {\n  if (!specifiedDomain || !specifiedDomain.length) {\n    return calculatedDomain;\n  }\n  if (isEqual(specifiedDomain, get(axisChild, 'type.defaultProps.domain'))) {\n    return calculatedDomain;\n  }\n\n  return specifiedDomain;\n};\n\nexport const getTooltipItem = (graphicalItem: ReactElement, payload: any) => {\n  const defaultedProps = (graphicalItem.type as any).defaultProps\n    ? { ...(graphicalItem.type as any).defaultProps, ...graphicalItem.props }\n    : graphicalItem.props;\n  const { dataKey, name, unit, formatter, tooltipType, chartType, hide } = defaultedProps;\n\n  return {\n    ...filterProps(graphicalItem, false),\n    dataKey,\n    unit,\n    formatter,\n    name: name || dataKey,\n    color: getMainColorOfGraphicItem(graphicalItem),\n    value: getValueByDataKey(payload, dataKey),\n    type: tooltipType,\n    payload,\n    chartType,\n    hide,\n  };\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","import isNil from 'lodash/isNil';\nimport { ReactElement, SVGProps, isValidElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nimport { Coordinate, ChartOffset, GeometrySector } from './types';\n\nexport const RADIAN = Math.PI / 180;\n\nexport const degreeToRadian = (angle: number) => (angle * Math.PI) / 180;\n\nexport const radianToDegree = (angleInRadian: number) => (angleInRadian * 180) / Math.PI;\n\nexport const polarToCartesian = (cx: number, cy: number, radius: number, angle: number): Coordinate => ({\n  x: cx + Math.cos(-RADIAN * angle) * radius,\n  y: cy + Math.sin(-RADIAN * angle) * radius,\n});\n\nexport const getMaxRadius = (\n  width: number,\n  height: number,\n  offset: ChartOffset = {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n  },\n) =>\n  Math.min(\n    Math.abs(width - (offset.left || 0) - (offset.right || 0)),\n    Math.abs(height - (offset.top || 0) - (offset.bottom || 0)),\n  ) / 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 */\nexport const formatAxisMap = (\n  props: any,\n  axisMap: any,\n  offset: ChartOffset,\n  axisType: 'angleAxis' | 'radiusAxis',\n  chartName: string,\n) => {\n  const { width, height } = props;\n  let { startAngle, endAngle } = props;\n  const cx = getPercentValue(props.cx, width, width / 2);\n  const cy = getPercentValue(props.cy, height, height / 2);\n  const maxRadius = getMaxRadius(width, height, offset);\n  const innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n  const outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n  const ids = Object.keys(axisMap);\n\n  return ids.reduce((result, id) => {\n    const axis = axisMap[id];\n    const { domain, reversed } = axis;\n    let 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);\n      [startAngle, endAngle] = range;\n    }\n\n    const { realScaleType, scale } = parseScale(axis, chartName);\n    scale.domain(domain).range(range);\n    checkDomainOfScale(scale);\n    const ticks = getTicksOfScale(scale, { ...axis, realScaleType });\n\n    const finalAxis = {\n      ...axis,\n      ...ticks,\n      range,\n      radius: outerRadius,\n      realScaleType,\n      scale,\n      cx,\n      cy,\n      innerRadius,\n      outerRadius,\n      startAngle,\n      endAngle,\n    };\n\n    return { ...result, [id]: finalAxis };\n  }, {});\n};\n\nexport const distanceBetweenPoints = (point: Coordinate, anotherPoint: Coordinate) => {\n  const { x: x1, y: y1 } = point;\n  const { x: x2, y: y2 } = anotherPoint;\n\n  return Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);\n};\n\nexport const getAngleOfPoint = ({ x, y }: Coordinate, { cx, cy }: GeometrySector) => {\n  const radius = distanceBetweenPoints({ x, y }, { x: cx, y: cy });\n\n  if (radius <= 0) {\n    return { radius };\n  }\n\n  const cos = (x - cx) / radius;\n  let angleInRadian = Math.acos(cos);\n\n  if (y > cy) {\n    angleInRadian = 2 * Math.PI - angleInRadian;\n  }\n\n  return { radius, angle: radianToDegree(angleInRadian), angleInRadian };\n};\n\nexport const formatAngleOfSector = ({ startAngle, endAngle }: GeometrySector) => {\n  const startCnt = Math.floor(startAngle / 360);\n  const endCnt = Math.floor(endAngle / 360);\n  const min = Math.min(startCnt, endCnt);\n\n  return {\n    startAngle: startAngle - min * 360,\n    endAngle: endAngle - min * 360,\n  };\n};\n\nconst reverseFormatAngleOfSetor = (angle: number, { startAngle, endAngle }: GeometrySector) => {\n  const startCnt = Math.floor(startAngle / 360);\n  const endCnt = Math.floor(endAngle / 360);\n  const min = Math.min(startCnt, endCnt);\n\n  return angle + min * 360;\n};\n\nexport const inRangeOfSector = ({ x, y }: Coordinate, sector: GeometrySector) => {\n  const { radius, angle } = getAngleOfPoint({ x, y }, sector);\n  const { innerRadius, outerRadius } = sector;\n\n  if (radius < innerRadius || radius > outerRadius) {\n    return false;\n  }\n\n  if (radius === 0) {\n    return true;\n  }\n\n  const { startAngle, endAngle } = formatAngleOfSector(sector);\n  let formatAngle = angle;\n  let inRange;\n\n  if (startAngle <= endAngle) {\n    while (formatAngle > endAngle) {\n      formatAngle -= 360;\n    }\n    while (formatAngle < startAngle) {\n      formatAngle += 360;\n    }\n    inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n  } else {\n    while (formatAngle > startAngle) {\n      formatAngle -= 360;\n    }\n    while (formatAngle < endAngle) {\n      formatAngle += 360;\n    }\n    inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n  }\n\n  if (inRange) {\n    return { ...sector, radius, angle: reverseFormatAngleOfSetor(formatAngle, sector) };\n  }\n\n  return null;\n};\n\nexport const getTickClassName = (\n  tick?: SVGProps<SVGTextElement> | ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | boolean,\n) => (!isValidElement(tick) && !isFunction(tick) && typeof tick !== 'boolean' ? tick.className : '');\n","import React, { cloneElement, isValidElement, ReactNode, ReactElement, createElement, SVGProps } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport clsx from 'clsx';\nimport { Text } from './Text';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { ViewBox, PolarViewBox, CartesianViewBox } from '../util/types';\n\nexport type ContentType = ReactElement | ((props: Props) => ReactNode);\n\nexport type LabelPosition =\n  | 'top'\n  | 'left'\n  | 'right'\n  | 'bottom'\n  | 'inside'\n  | 'outside'\n  | 'insideLeft'\n  | 'insideRight'\n  | 'insideTop'\n  | 'insideBottom'\n  | 'insideTopLeft'\n  | 'insideBottomLeft'\n  | 'insideTopRight'\n  | 'insideBottomRight'\n  | 'insideStart'\n  | 'insideEnd'\n  | 'end'\n  | 'center'\n  | 'centerTop'\n  | 'centerBottom'\n  | 'middle'\n  | {\n      x?: number;\n      y?: number;\n    };\n\ninterface LabelProps {\n  viewBox?: ViewBox;\n  parentViewBox?: ViewBox;\n  formatter?: Function;\n  value?: number | string;\n  offset?: number;\n  position?: LabelPosition;\n  children?: ReactNode;\n  className?: string;\n  content?: ContentType;\n  textBreakAll?: boolean;\n  angle?: number;\n  index?: number;\n}\n\nexport type Props = Omit<SVGProps<SVGTextElement>, 'viewBox'> & LabelProps;\n\nexport type ImplicitLabelType =\n  | boolean\n  | string\n  | number\n  | ReactElement<SVGElement>\n  | ((props: any) => ReactElement<SVGElement>)\n  | Props;\n\nconst getLabel = (props: Props) => {\n  const { value, formatter } = props;\n  const label = isNil(props.children) ? value : props.children;\n\n  if (isFunction(formatter)) {\n    return formatter(label);\n  }\n\n  return label;\n};\n\nconst getDeltaAngle = (startAngle: number, endAngle: number) => {\n  const sign = mathSign(endAngle - startAngle);\n  const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n\n  return sign * deltaAngle;\n};\n\nconst renderRadialLabel = (labelProps: Props, label: ReactNode, attrs: SVGProps<SVGTextElement>) => {\n  const { position, viewBox, offset, className } = labelProps;\n  const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, clockWise } = viewBox as PolarViewBox;\n  const radius = (innerRadius + outerRadius) / 2;\n  const deltaAngle = getDeltaAngle(startAngle, endAngle);\n  const sign = deltaAngle >= 0 ? 1 : -1;\n  let 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\n  const startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n  const endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n  const path = `M${startPoint.x},${startPoint.y}\n    A${radius},${radius},0,1,${direction ? 0 : 1},\n    ${endPoint.x},${endPoint.y}`;\n  const id = isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n\n  return (\n    <text {...attrs} dominantBaseline=\"central\" className={clsx('recharts-radial-bar-label', className)}>\n      <defs>\n        <path id={id} d={path} />\n      </defs>\n      <textPath xlinkHref={`#${id}`}>{label}</textPath>\n    </text>\n  );\n};\n\nconst getAttrsOfPolarLabel = (props: Props) => {\n  const { viewBox, offset, position } = props;\n  const { cx, cy, innerRadius, outerRadius, startAngle, endAngle } = viewBox as PolarViewBox;\n  const midAngle = (startAngle + endAngle) / 2;\n\n  if (position === 'outside') {\n    const { x, y } = polarToCartesian(cx, cy, outerRadius + offset, midAngle);\n\n    return {\n      x,\n      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  const r = (innerRadius + outerRadius) / 2;\n  const { x, y } = polarToCartesian(cx, cy, r, midAngle);\n\n  return {\n    x,\n    y,\n    textAnchor: 'middle',\n    verticalAnchor: 'middle',\n  };\n};\n\nconst getAttrsOfCartesianLabel = (props: Props) => {\n  const { viewBox, parentViewBox, offset, position } = props;\n  const { x, y, width, height } = viewBox as CartesianViewBox;\n\n  // Define vertical offsets and position inverts based on the value being positive or negative\n  const verticalSign = height >= 0 ? 1 : -1;\n  const verticalOffset = verticalSign * offset;\n  const verticalEnd = verticalSign > 0 ? 'end' : 'start';\n  const verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n  // Define horizontal offsets and position inverts based on the value being positive or negative\n  const horizontalSign = width >= 0 ? 1 : -1;\n  const horizontalOffset = horizontalSign * offset;\n  const horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n  const horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n\n  if (position === 'top') {\n    const attrs = {\n      x: x + width / 2,\n      y: y - verticalSign * offset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalEnd,\n    };\n\n    return {\n      ...attrs,\n      ...(parentViewBox\n        ? {\n            height: Math.max(y - (parentViewBox as CartesianViewBox).y, 0),\n            width,\n          }\n        : {}),\n    };\n  }\n\n  if (position === 'bottom') {\n    const attrs = {\n      x: x + width / 2,\n      y: y + height + verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalStart,\n    };\n\n    return {\n      ...attrs,\n      ...(parentViewBox\n        ? {\n            height: Math.max(\n              (parentViewBox as CartesianViewBox).y + (parentViewBox as CartesianViewBox).height - (y + height),\n              0,\n            ),\n            width,\n          }\n        : {}),\n    };\n  }\n\n  if (position === 'left') {\n    const attrs = {\n      x: x - horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalEnd,\n      verticalAnchor: 'middle',\n    };\n\n    return {\n      ...attrs,\n      ...(parentViewBox\n        ? {\n            width: Math.max(attrs.x - (parentViewBox as CartesianViewBox).x, 0),\n            height,\n          }\n        : {}),\n    };\n  }\n\n  if (position === 'right') {\n    const attrs = {\n      x: x + width + horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalStart,\n      verticalAnchor: 'middle',\n    };\n    return {\n      ...attrs,\n      ...(parentViewBox\n        ? {\n            width: Math.max(\n              (parentViewBox as CartesianViewBox).x + (parentViewBox as CartesianViewBox).width - attrs.x,\n              0,\n            ),\n            height,\n          }\n        : {}),\n    };\n  }\n\n  const sizeAttrs = parentViewBox ? { width, height } : {};\n\n  if (position === 'insideLeft') {\n    return {\n      x: x + horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalStart,\n      verticalAnchor: 'middle',\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideRight') {\n    return {\n      x: x + width - horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalEnd,\n      verticalAnchor: 'middle',\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideTop') {\n    return {\n      x: x + width / 2,\n      y: y + verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalStart,\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideBottom') {\n    return {\n      x: x + width / 2,\n      y: y + height - verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalEnd,\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideTopLeft') {\n    return {\n      x: x + horizontalOffset,\n      y: y + verticalOffset,\n      textAnchor: horizontalStart,\n      verticalAnchor: verticalStart,\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideTopRight') {\n    return {\n      x: x + width - horizontalOffset,\n      y: y + verticalOffset,\n      textAnchor: horizontalEnd,\n      verticalAnchor: verticalStart,\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideBottomLeft') {\n    return {\n      x: x + horizontalOffset,\n      y: y + height - verticalOffset,\n      textAnchor: horizontalStart,\n      verticalAnchor: verticalEnd,\n      ...sizeAttrs,\n    };\n  }\n\n  if (position === 'insideBottomRight') {\n    return {\n      x: x + width - horizontalOffset,\n      y: y + height - verticalOffset,\n      textAnchor: horizontalEnd,\n      verticalAnchor: verticalEnd,\n      ...sizeAttrs,\n    };\n  }\n\n  if (\n    isObject(position) &&\n    (isNumber(position.x) || isPercent(position.x)) &&\n    (isNumber(position.y) || isPercent(position.y))\n  ) {\n    return {\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\n  return {\n    x: x + width / 2,\n    y: y + height / 2,\n    textAnchor: 'middle',\n    verticalAnchor: 'middle',\n    ...sizeAttrs,\n  };\n};\n\nconst isPolar = (viewBox: CartesianViewBox | PolarViewBox): viewBox is PolarViewBox =>\n  'cx' in viewBox && isNumber(viewBox.cx);\n\nexport function Label({ offset = 5, ...restProps }: Props) {\n  const props = { offset, ...restProps };\n  const { viewBox, position, value, children, content, className = '', textBreakAll } = props;\n\n  if (!viewBox || (isNil(value) && isNil(children) && !isValidElement(content) && !isFunction(content))) {\n    return null;\n  }\n\n  if (isValidElement(content)) {\n    return cloneElement(content, props);\n  }\n\n  let label: ReactNode;\n  if (isFunction(content)) {\n    label = createElement(content as any, props);\n\n    if (isValidElement(label)) {\n      return label;\n    }\n  } else {\n    label = getLabel(props);\n  }\n\n  const isPolarLabel = isPolar(viewBox);\n  const attrs = filterProps(props, true);\n\n  if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n    return renderRadialLabel(props, label, attrs);\n  }\n\n  const positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n\n  return (\n    <Text className={clsx('recharts-label', className)} {...attrs} {...(positionAttrs as any)} breakAll={textBreakAll}>\n      {label}\n    </Text>\n  );\n}\n\nLabel.displayName = 'Label';\n\nconst parseViewBox = (props: any): ViewBox => {\n  const {\n    cx,\n    cy,\n    angle,\n    startAngle,\n    endAngle,\n    r,\n    radius,\n    innerRadius,\n    outerRadius,\n    x,\n    y,\n    top,\n    left,\n    width,\n    height,\n    clockWise,\n    labelViewBox,\n  } = props;\n\n  if (labelViewBox) {\n    return labelViewBox;\n  }\n\n  if (isNumber(width) && isNumber(height)) {\n    if (isNumber(x) && isNumber(y)) {\n      return { x, y, width, height };\n    }\n    if (isNumber(top) && isNumber(left)) {\n      return { x: top, y: left, width, height };\n    }\n  }\n\n  if (isNumber(x) && isNumber(y)) {\n    return { x, y, width: 0, height: 0 };\n  }\n\n  if (isNumber(cx) && isNumber(cy)) {\n    return {\n      cx,\n      cy,\n      startAngle: startAngle || angle || 0,\n      endAngle: endAngle || angle || 0,\n      innerRadius: innerRadius || 0,\n      outerRadius: outerRadius || radius || r || 0,\n      clockWise,\n    };\n  }\n\n  if (props.viewBox) {\n    return props.viewBox;\n  }\n\n  return {};\n};\n\nconst parseLabel = (label: unknown, viewBox: ViewBox) => {\n  if (!label) {\n    return null;\n  }\n\n  if (label === true) {\n    return <Label key=\"label-implicit\" viewBox={viewBox} />;\n  }\n\n  if (isNumOrStr(label)) {\n    return <Label key=\"label-implicit\" viewBox={viewBox} value={label} />;\n  }\n\n  if (isValidElement(label)) {\n    if (label.type === Label) {\n      return cloneElement<LabelProps>(label, { key: 'label-implicit', viewBox });\n    }\n\n    return <Label key=\"label-implicit\" content={label} viewBox={viewBox} />;\n  }\n\n  if (isFunction(label)) {\n    return <Label key=\"label-implicit\" content={label} viewBox={viewBox} />;\n  }\n\n  if (isObject(label)) {\n    return <Label viewBox={viewBox} {...label} key=\"label-implicit\" />;\n  }\n\n  return null;\n};\n\nconst renderCallByParent = (\n  parentProps: { children?: ReactNode; label?: unknown },\n  viewBox?: ViewBox,\n  checkPropsLabel = true,\n): ReactElement[] | null => {\n  if (!parentProps || (!parentProps.children && checkPropsLabel && !parentProps.label)) {\n    return null;\n  }\n  const { children } = parentProps;\n  const parentViewBox = parseViewBox(parentProps);\n\n  const explicitChildren = findAllByType(children, Label).map((child, index) => {\n    return cloneElement(child, {\n      viewBox: viewBox || parentViewBox,\n      // eslint-disable-next-line react/no-array-index-key\n      key: `label-${index}`,\n    });\n  });\n\n  if (!checkPropsLabel) {\n    return explicitChildren;\n  }\n  const implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n\n  return [implicitLabel, ...explicitChildren];\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;\n","import React, { cloneElement, ReactElement, ReactNode, SVGProps } from 'react';\nimport isNil from 'lodash/isNil';\nimport isObject from 'lodash/isObject';\nimport isFunction from 'lodash/isFunction';\nimport last from 'lodash/last';\n\nimport { Label, ContentType, Props as LabelProps, LabelPosition } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { DataKey, ViewBox } from '../util/types';\n\ninterface Data {\n  value?: number | string | Array<number | string>;\n  payload?: any;\n  parentViewBox?: ViewBox;\n}\n\ninterface LabelListProps<T extends Data> {\n  id?: string;\n  data?: Array<T>;\n  valueAccessor?: Function;\n  clockWise?: boolean;\n  dataKey?: DataKey<Record<string, any>>;\n  content?: ContentType;\n  textBreakAll?: boolean;\n  position?: LabelPosition;\n  offset?: LabelProps['offset'];\n  angle?: number;\n  formatter?: Function;\n}\n\nexport type Props<T extends Data> = SVGProps<SVGTextElement> & LabelListProps<T>;\n\nexport type ImplicitLabelListType<T extends Data> =\n  | boolean\n  | ReactElement<SVGElement>\n  | ((props: any) => ReactElement<SVGElement>)\n  | Props<T>;\n\nconst defaultAccessor = (entry: Data) => (Array.isArray(entry.value) ? last(entry.value) : entry.value);\n\nexport function LabelList<T extends Data>({ valueAccessor = defaultAccessor, ...restProps }: Props<T>) {\n  const { data, dataKey, clockWise, id, textBreakAll, ...others } = restProps;\n\n  if (!data || !data.length) {\n    return null;\n  }\n\n  return (\n    <Layer className=\"recharts-label-list\">\n      {data.map((entry, index) => {\n        const value = isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n        const idProps = isNil(id) ? {} : { id: `${id}-${index}` };\n\n        return (\n          <Label\n            {...filterProps(entry, true)}\n            {...others}\n            {...idProps}\n            parentViewBox={entry.parentViewBox}\n            value={value}\n            textBreakAll={textBreakAll}\n            viewBox={Label.parseViewBox(isNil(clockWise) ? entry : { ...entry, clockWise })}\n            key={`label-${index}`} // eslint-disable-line react/no-array-index-key\n            index={index}\n          />\n        );\n      })}\n    </Layer>\n  );\n}\n\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList<T extends Data>(label: unknown, data: Array<T>) {\n  if (!label) {\n    return null;\n  }\n\n  if (label === true) {\n    return <LabelList key=\"labelList-implicit\" data={data} />;\n  }\n\n  if (React.isValidElement(label) || isFunction(label)) {\n    return <LabelList key=\"labelList-implicit\" data={data} content={label} />;\n  }\n\n  if (isObject(label)) {\n    return <LabelList data={data} {...label} key=\"labelList-implicit\" />;\n  }\n\n  return null;\n}\n\nfunction renderCallByParent<T extends Data>(\n  parentProps: { children?: ReactNode; label?: unknown },\n  data: Array<T>,\n  checkPropsLabel = true,\n) {\n  if (!parentProps || (!parentProps.children && checkPropsLabel && !parentProps.label)) {\n    return null;\n  }\n  const { children } = parentProps;\n\n  const explicitChildren = findAllByType(children, LabelList).map((child, index) =>\n    cloneElement(child, {\n      data,\n      // eslint-disable-next-line react/no-array-index-key\n      key: `labelList-${index}`,\n    }),\n  );\n  if (!checkPropsLabel) {\n    return explicitChildren;\n  }\n\n  const implicitLabelList = parseLabelList(parentProps.label, data);\n\n  return [implicitLabelList, ...explicitChildren];\n}\n\nLabelList.renderCallByParent = renderCallByParent;\n","/**\n * @fileOverview Customized\n */\nimport React, { isValidElement, cloneElement, createElement, Component, FunctionComponent, ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport { Layer } from '../container/Layer';\nimport { warn } from '../util/LogUtils';\n\ntype Comp<P> = FunctionComponent<P> | Component<P> | ReactElement<P>;\nexport type Props<P, C extends Comp<P>> = P & {\n  component: C;\n};\n\n/**\n * custom svg elements by rechart instance props and state.\n * @returns {Object}   svg elements\n */\nexport function Customized<P, C extends Comp<P>>({ component, ...props }: Props<P, C>) {\n  let child;\n  if (isValidElement(component)) {\n    child = cloneElement(component, props);\n  } else if (isFunction(component)) {\n    child = createElement(component, props as any);\n  } else {\n    warn(false, \"Customized's props `component` must be React.element or Function, but got %s.\", typeof component);\n  }\n  return <Layer className=\"recharts-customized-wrapper\">{child}</Layer>;\n}\n\nCustomized.displayName = 'Customized';\n","/**\n * @fileOverview Sector\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { GeometrySector } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nconst getDeltaAngle = (startAngle: number, endAngle: number) => {\n  const sign = mathSign(endAngle - startAngle);\n  const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n\n  return sign * deltaAngle;\n};\n\ninterface TangentCircleDef {\n  cx?: number;\n  cy?: number;\n  radius?: number;\n  angle?: number;\n  sign?: number;\n  isExternal?: boolean;\n  cornerRadius?: number;\n  cornerIsExternal?: boolean;\n}\n\nconst getTangentCircle = ({\n  cx,\n  cy,\n  radius,\n  angle,\n  sign,\n  isExternal,\n  cornerRadius,\n  cornerIsExternal,\n}: TangentCircleDef) => {\n  const centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n  const theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n  const centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n  const center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n  // The coordinate of point which is tangent to the circle\n  const circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n  // The coordinate of point which is tangent to the radius line\n  const lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n  const lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n  return { center, circleTangency, lineTangency, theta };\n};\n\nconst getSectorPath = ({ cx, cy, innerRadius, outerRadius, startAngle, endAngle }: GeometrySector) => {\n  const angle = getDeltaAngle(startAngle, endAngle);\n\n  // When the angle of sector equals to 360, star point and end point coincide\n  const tempEndAngle = startAngle + angle;\n  const outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n  const outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n\n  let path = `M ${outerStartPoint.x},${outerStartPoint.y}\n    A ${outerRadius},${outerRadius},0,\n    ${+(Math.abs(angle) > 180)},${+(startAngle > tempEndAngle)},\n    ${outerEndPoint.x},${outerEndPoint.y}\n  `;\n\n  if (innerRadius > 0) {\n    const innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n    const innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n    path += `L ${innerEndPoint.x},${innerEndPoint.y}\n            A ${innerRadius},${innerRadius},0,\n            ${+(Math.abs(angle) > 180)},${+(startAngle <= tempEndAngle)},\n            ${innerStartPoint.x},${innerStartPoint.y} Z`;\n  } else {\n    path += `L ${cx},${cy} Z`;\n  }\n\n  return path;\n};\n\nconst getSectorWithCorner = ({\n  cx,\n  cy,\n  innerRadius,\n  outerRadius,\n  cornerRadius,\n  forceCornerRadius,\n  cornerIsExternal,\n  startAngle,\n  endAngle,\n}: GeometrySector) => {\n  const sign = mathSign(endAngle - startAngle);\n  const {\n    circleTangency: soct,\n    lineTangency: solt,\n    theta: sot,\n  } = getTangentCircle({\n    cx,\n    cy,\n    radius: outerRadius,\n    angle: startAngle,\n    sign,\n    cornerRadius,\n    cornerIsExternal,\n  });\n  const {\n    circleTangency: eoct,\n    lineTangency: eolt,\n    theta: eot,\n  } = getTangentCircle({\n    cx,\n    cy,\n    radius: outerRadius,\n    angle: endAngle,\n    sign: -sign,\n    cornerRadius,\n    cornerIsExternal,\n  });\n  const outerArcAngle = cornerIsExternal\n    ? Math.abs(startAngle - endAngle)\n    : Math.abs(startAngle - endAngle) - sot - eot;\n\n  if (outerArcAngle < 0) {\n    if (forceCornerRadius) {\n      return `M ${solt.x},${solt.y}\n        a${cornerRadius},${cornerRadius},0,0,1,${cornerRadius * 2},0\n        a${cornerRadius},${cornerRadius},0,0,1,${-cornerRadius * 2},0\n      `;\n    }\n    return getSectorPath({\n      cx,\n      cy,\n      innerRadius,\n      outerRadius,\n      startAngle,\n      endAngle,\n    });\n  }\n\n  let path = `M ${solt.x},${solt.y}\n    A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${soct.x},${soct.y}\n    A${outerRadius},${outerRadius},0,${+(outerArcAngle > 180)},${+(sign < 0)},${eoct.x},${eoct.y}\n    A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${eolt.x},${eolt.y}\n  `;\n\n  if (innerRadius > 0) {\n    const {\n      circleTangency: sict,\n      lineTangency: silt,\n      theta: sit,\n    } = getTangentCircle({\n      cx,\n      cy,\n      radius: innerRadius,\n      angle: startAngle,\n      sign,\n      isExternal: true,\n      cornerRadius,\n      cornerIsExternal,\n    });\n    const {\n      circleTangency: eict,\n      lineTangency: eilt,\n      theta: eit,\n    } = getTangentCircle({\n      cx,\n      cy,\n      radius: innerRadius,\n      angle: endAngle,\n      sign: -sign,\n      isExternal: true,\n      cornerRadius,\n      cornerIsExternal,\n    });\n    const innerArcAngle = cornerIsExternal\n      ? Math.abs(startAngle - endAngle)\n      : Math.abs(startAngle - endAngle) - sit - eit;\n\n    if (innerArcAngle < 0 && cornerRadius === 0) {\n      return `${path}L${cx},${cy}Z`;\n    }\n\n    path += `L${eilt.x},${eilt.y}\n      A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${eict.x},${eict.y}\n      A${innerRadius},${innerRadius},0,${+(innerArcAngle > 180)},${+(sign > 0)},${sict.x},${sict.y}\n      A${cornerRadius},${cornerRadius},0,0,${+(sign < 0)},${silt.x},${silt.y}Z`;\n  } else {\n    path += `L${cx},${cy}Z`;\n  }\n\n  return path;\n};\n\ninterface SectorProps extends GeometrySector {\n  className?: string;\n}\n\nexport type Props = SVGProps<SVGPathElement> & SectorProps;\n\nconst 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};\n\nexport const Sector: React.FC<Props> = sectorProps => {\n  const props = { ...defaultProps, ...sectorProps };\n  const {\n    cx,\n    cy,\n    innerRadius,\n    outerRadius,\n    cornerRadius,\n    forceCornerRadius,\n    cornerIsExternal,\n    startAngle,\n    endAngle,\n    className,\n  } = props;\n\n  if (outerRadius < innerRadius || startAngle === endAngle) {\n    return null;\n  }\n\n  const layerClass = clsx('recharts-sector', className);\n  const deltaRadius = outerRadius - innerRadius;\n  const cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n  let path;\n\n  if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n    path = getSectorWithCorner({\n      cx,\n      cy,\n      innerRadius,\n      outerRadius,\n      cornerRadius: Math.min(cr, deltaRadius / 2),\n      forceCornerRadius,\n      cornerIsExternal,\n      startAngle,\n      endAngle,\n    });\n  } else {\n    path = getSectorPath({ cx, cy, innerRadius, outerRadius, startAngle, endAngle });\n  }\n\n  return <path {...filterProps(props, true)} className={layerClass} d={path} role=\"img\" />;\n};\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); // falls through\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); // falls through\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; // falls through\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 pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nclass BumpRadial {\n  constructor(context) {\n    this._context = context;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {}\n  point(x, y) {\n    x = +x, y = +y;\n    if (this._point === 0) {\n      this._point = 1;\n    } else {\n      const p0 = pointRadial(this._x0, this._y0);\n      const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n      const p2 = pointRadial(x, this._y0);\n      const p3 = pointRadial(x, y);\n      this._context.moveTo(...p0);\n      this._context.bezierCurveTo(...p1, ...p2, ...p3);\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nexport function bumpX(context) {\n  return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n  return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n  return new BumpRadial(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; // falls through\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; // falls through\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 array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.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      path = withPath(line);\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 array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.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      path = withPath(area);\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","/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport {\n  line as shapeLine,\n  area as shapeArea,\n  CurveFactory,\n  curveBasisClosed,\n  curveBasisOpen,\n  curveBasis,\n  curveBumpX,\n  curveBumpY,\n  curveLinearClosed,\n  curveLinear,\n  curveMonotoneX,\n  curveMonotoneY,\n  curveNatural,\n  curveStep,\n  curveStepAfter,\n  curveStepBefore,\n} from 'victory-vendor/d3-shape';\nimport upperFirst from 'lodash/upperFirst';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { LayoutType, PresentationAttributesWithProps, adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\n\ninterface CurveFactories {\n  [index: string]: CurveFactory;\n}\n\nconst CURVE_FACTORIES: CurveFactories = {\n  curveBasisClosed,\n  curveBasisOpen,\n  curveBasis,\n  curveBumpX,\n  curveBumpY,\n  curveLinearClosed,\n  curveLinear,\n  curveMonotoneX,\n  curveMonotoneY,\n  curveNatural,\n  curveStep,\n  curveStepAfter,\n  curveStepBefore,\n};\n\nexport type CurveType =\n  | 'basis'\n  | 'basisClosed'\n  | 'basisOpen'\n  | 'bumpX'\n  | 'bumpY'\n  | 'bump'\n  | 'linear'\n  | 'linearClosed'\n  | 'natural'\n  | 'monotoneX'\n  | 'monotoneY'\n  | 'monotone'\n  | 'step'\n  | 'stepBefore'\n  | 'stepAfter'\n  | CurveFactory;\n\nexport interface Point {\n  x: number;\n  y: number;\n}\n\nconst defined = (p: Point) => p.x === +p.x && p.y === +p.y;\nconst getX = (p: Point) => p.x;\nconst getY = (p: Point) => p.y;\n\nconst getCurveFactory = (type: CurveType, layout: LayoutType) => {\n  if (isFunction(type)) {\n    return type;\n  }\n\n  const name = `curve${upperFirst(type)}`;\n\n  if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n    return CURVE_FACTORIES[`${name}${layout === 'vertical' ? 'Y' : 'X'}`];\n  }\n  return CURVE_FACTORIES[name] || curveLinear;\n};\n\ninterface CurveProps {\n  className?: string;\n  type?: CurveType;\n  layout?: LayoutType;\n  baseLine?: number | Array<Point>;\n  points?: Array<Point>;\n  connectNulls?: boolean;\n  path?: string;\n  pathRef?: (ref: SVGPathElement) => void;\n}\n\nexport type Props = Omit<PresentationAttributesWithProps<CurveProps, SVGPathElement>, 'type' | 'points'> & CurveProps;\n\ntype GetPathProps = Pick<Props, 'type' | 'points' | 'baseLine' | 'layout' | 'connectNulls'>;\n\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport const getPath = ({\n  type = 'linear',\n  points = [],\n  baseLine,\n  layout,\n  connectNulls = false,\n}: GetPathProps): string | null => {\n  const curveFactory = getCurveFactory(type, layout);\n  const formatPoints = connectNulls ? points.filter(entry => defined(entry)) : points;\n  let lineFunction;\n\n  if (Array.isArray(baseLine)) {\n    const formatBaseLine = connectNulls ? baseLine.filter(base => defined(base)) : baseLine;\n    const areaPoints = formatPoints.map((entry, index) => ({ ...entry, base: formatBaseLine[index] }));\n    if (layout === 'vertical') {\n      lineFunction = shapeArea<Point & { base: Point }>()\n        .y(getY)\n        .x1(getX)\n        .x0(d => d.base.x);\n    } else {\n      lineFunction = shapeArea<Point & { base: Point }>()\n        .x(getX)\n        .y1(getY)\n        .y0(d => d.base.y);\n    }\n    lineFunction.defined(defined).curve(curveFactory);\n\n    return lineFunction(areaPoints);\n  }\n  if (layout === 'vertical' && isNumber(baseLine)) {\n    lineFunction = shapeArea<Point>().y(getY).x1(getX).x0(baseLine);\n  } else if (isNumber(baseLine)) {\n    lineFunction = shapeArea<Point>().x(getX).y1(getY).y0(baseLine);\n  } else {\n    lineFunction = shapeLine<Point>().x(getX).y(getY);\n  }\n\n  lineFunction.defined(defined).curve(curveFactory);\n\n  return lineFunction(formatPoints);\n};\n\nexport const Curve: React.FC<Props> = props => {\n  const { className, points, path, pathRef } = props;\n\n  if ((!points || !points.length) && !path) {\n    return null;\n  }\n\n  const realPath = points && points.length ? getPath(props) : path;\n\n  return (\n    <path\n      {...filterProps(props, false)}\n      {...adaptEventHandlers(props)}\n      className={clsx('recharts-curve', className)}\n      d={realPath}\n      ref={pathRef}\n    />\n  );\n};\n","var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n    return function isEqual(a, b, state) {\n        return comparatorA(a, b, state) && comparatorB(a, b, state);\n    };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n    return function isCircular(a, b, state) {\n        if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n            return areItemsEqual(a, b, state);\n        }\n        var cache = state.cache;\n        var cachedA = cache.get(a);\n        var cachedB = cache.get(b);\n        if (cachedA && cachedB) {\n            return cachedA === b && cachedB === a;\n        }\n        cache.set(a, b);\n        cache.set(b, a);\n        var result = areItemsEqual(a, b, state);\n        cache.delete(a);\n        cache.delete(b);\n        return result;\n    };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n    return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nvar hasOwn = Object.hasOwn ||\n    (function (object, property) {\n        return hasOwnProperty.call(object, property);\n    });\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n    return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n\nvar OWNER = '_owner';\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n    var index = a.length;\n    if (b.length !== index) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n    return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    var matchedIndices = {};\n    var aIterable = a.entries();\n    var index = 0;\n    var aResult;\n    var bResult;\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        var bIterable = b.entries();\n        var hasMatch = false;\n        var matchIndex = 0;\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            var _a = aResult.value, aKey = _a[0], aValue = _a[1];\n            var _b = bResult.value, bKey = _b[0], bValue = _b[1];\n            if (!hasMatch &&\n                !matchedIndices[matchIndex] &&\n                (hasMatch =\n                    state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n                        state.equals(aValue, bValue, aKey, bKey, a, b, state))) {\n                matchedIndices[matchIndex] = true;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n        index++;\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n    var properties = keys(a);\n    var index = properties.length;\n    if (keys(b).length !== index) {\n        return false;\n    }\n    var property;\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        property = properties[index];\n        if (property === OWNER &&\n            (a.$$typeof || b.$$typeof) &&\n            a.$$typeof !== b.$$typeof) {\n            return false;\n        }\n        if (!hasOwn(b, property) ||\n            !state.equals(a[property], b[property], property, property, a, b, state)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n    var properties = getStrictProperties(a);\n    var index = properties.length;\n    if (getStrictProperties(b).length !== index) {\n        return false;\n    }\n    var property;\n    var descriptorA;\n    var descriptorB;\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        property = properties[index];\n        if (property === OWNER &&\n            (a.$$typeof || b.$$typeof) &&\n            a.$$typeof !== b.$$typeof) {\n            return false;\n        }\n        if (!hasOwn(b, property)) {\n            return false;\n        }\n        if (!state.equals(a[property], b[property], property, property, a, b, state)) {\n            return false;\n        }\n        descriptorA = getOwnPropertyDescriptor(a, property);\n        descriptorB = getOwnPropertyDescriptor(b, property);\n        if ((descriptorA || descriptorB) &&\n            (!descriptorA ||\n                !descriptorB ||\n                descriptorA.configurable !== descriptorB.configurable ||\n                descriptorA.enumerable !== descriptorB.enumerable ||\n                descriptorA.writable !== descriptorB.writable)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n    return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n    return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    var matchedIndices = {};\n    var aIterable = a.values();\n    var aResult;\n    var bResult;\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        var bIterable = b.values();\n        var hasMatch = false;\n        var matchIndex = 0;\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            if (!hasMatch &&\n                !matchedIndices[matchIndex] &&\n                (hasMatch = state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state))) {\n                matchedIndices[matchIndex] = true;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n    var index = a.length;\n    if (b.length !== index) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (a[index] !== b[index]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nvar ARGUMENTS_TAG = '[object Arguments]';\nvar BOOLEAN_TAG = '[object Boolean]';\nvar DATE_TAG = '[object Date]';\nvar MAP_TAG = '[object Map]';\nvar NUMBER_TAG = '[object Number]';\nvar OBJECT_TAG = '[object Object]';\nvar REG_EXP_TAG = '[object RegExp]';\nvar SET_TAG = '[object Set]';\nvar STRING_TAG = '[object String]';\nvar isArray = Array.isArray;\nvar isTypedArray = typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n    ? ArrayBuffer.isView\n    : null;\nvar assign = Object.assign;\nvar getTag = Object.prototype.toString.call.bind(Object.prototype.toString);\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(_a) {\n    var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, arePrimitiveWrappersEqual = _a.arePrimitiveWrappersEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, areTypedArraysEqual = _a.areTypedArraysEqual;\n    /**\n     * compare the value of the two objects and return true if they are equivalent in values\n     */\n    return function comparator(a, b, state) {\n        // If the items are strictly equal, no need to do a value comparison.\n        if (a === b) {\n            return true;\n        }\n        // If the items are not non-nullish objects, then the only possibility\n        // of them being equal but not strictly is if they are both `NaN`. Since\n        // `NaN` is uniquely not equal to itself, we can use self-comparison of\n        // both objects, which is faster than `isNaN()`.\n        if (a == null ||\n            b == null ||\n            typeof a !== 'object' ||\n            typeof b !== 'object') {\n            return a !== a && b !== b;\n        }\n        var constructor = a.constructor;\n        // Checks are listed in order of commonality of use-case:\n        //   1. Common complex object types (plain object, array)\n        //   2. Common data values (date, regexp)\n        //   3. Less-common complex object types (map, set)\n        //   4. Less-common data values (promise, primitive wrappers)\n        // Inherently this is both subjective and assumptive, however\n        // when reviewing comparable libraries in the wild this order\n        // appears to be generally consistent.\n        // Constructors should match, otherwise there is potential for false positives\n        // between class and subclass or custom object and POJO.\n        if (constructor !== b.constructor) {\n            return false;\n        }\n        // `isPlainObject` only checks against the object's own realm. Cross-realm\n        // comparisons are rare, and will be handled in the ultimate fallback, so\n        // we can avoid capturing the string tag.\n        if (constructor === Object) {\n            return areObjectsEqual(a, b, state);\n        }\n        // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n        // the string tag or doing an `instanceof` check.\n        if (isArray(a)) {\n            return areArraysEqual(a, b, state);\n        }\n        // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n        // capturing the string tag or comparing against all possible constructors.\n        if (isTypedArray != null && isTypedArray(a)) {\n            return areTypedArraysEqual(a, b, state);\n        }\n        // Try to fast-path equality checks for other complex object types in the\n        // same realm to avoid capturing the string tag. Strict equality is used\n        // instead of `instanceof` because it is more performant for the common\n        // use-case. If someone is subclassing a native class, it will be handled\n        // with the string tag comparison.\n        if (constructor === Date) {\n            return areDatesEqual(a, b, state);\n        }\n        if (constructor === RegExp) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (constructor === Map) {\n            return areMapsEqual(a, b, state);\n        }\n        if (constructor === Set) {\n            return areSetsEqual(a, b, state);\n        }\n        // Since this is a custom object, capture the string tag to determing its type.\n        // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n        var tag = getTag(a);\n        if (tag === DATE_TAG) {\n            return areDatesEqual(a, b, state);\n        }\n        if (tag === REG_EXP_TAG) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (tag === MAP_TAG) {\n            return areMapsEqual(a, b, state);\n        }\n        if (tag === SET_TAG) {\n            return areSetsEqual(a, b, state);\n        }\n        if (tag === OBJECT_TAG) {\n            // The exception for value comparison is custom `Promise`-like class instances. These should\n            // be treated the same as standard `Promise` objects, which means strict equality, and if\n            // it reaches this point then that strict equality comparison has already failed.\n            return (typeof a.then !== 'function' &&\n                typeof b.then !== 'function' &&\n                areObjectsEqual(a, b, state));\n        }\n        // If an arguments tag, it should be treated as a standard object.\n        if (tag === ARGUMENTS_TAG) {\n            return areObjectsEqual(a, b, state);\n        }\n        // As the penultimate fallback, check if the values passed are primitive wrappers. This\n        // is very rare in modern JS, which is why it is deprioritized compared to all other object\n        // types.\n        if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n            return arePrimitiveWrappersEqual(a, b, state);\n        }\n        // If not matching any tags that require a specific type of comparison, then we hard-code false because\n        // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n        //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n        //     comparison that can be made.\n        //   - For types that can be introspected, but rarely have requirements to be compared\n        //     (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n        //     use-cases (may be included in a future release, if requested enough).\n        //   - For types that can be introspected but do not have an objective definition of what\n        //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n        // In all cases, these decisions should be reevaluated based on changes to the language and\n        // common development practices.\n        return false;\n    };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig(_a) {\n    var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;\n    var config = {\n        areArraysEqual: strict\n            ? areObjectsEqualStrict\n            : areArraysEqual,\n        areDatesEqual: areDatesEqual,\n        areMapsEqual: strict\n            ? combineComparators(areMapsEqual, areObjectsEqualStrict)\n            : areMapsEqual,\n        areObjectsEqual: strict\n            ? areObjectsEqualStrict\n            : areObjectsEqual,\n        arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n        areRegExpsEqual: areRegExpsEqual,\n        areSetsEqual: strict\n            ? combineComparators(areSetsEqual, areObjectsEqualStrict)\n            : areSetsEqual,\n        areTypedArraysEqual: strict\n            ? areObjectsEqualStrict\n            : areTypedArraysEqual,\n    };\n    if (createCustomConfig) {\n        config = assign({}, config, createCustomConfig(config));\n    }\n    if (circular) {\n        var areArraysEqual$1 = createIsCircular(config.areArraysEqual);\n        var areMapsEqual$1 = createIsCircular(config.areMapsEqual);\n        var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);\n        var areSetsEqual$1 = createIsCircular(config.areSetsEqual);\n        config = assign({}, config, {\n            areArraysEqual: areArraysEqual$1,\n            areMapsEqual: areMapsEqual$1,\n            areObjectsEqual: areObjectsEqual$1,\n            areSetsEqual: areSetsEqual$1,\n        });\n    }\n    return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n    return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n        return compare(a, b, state);\n    };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual(_a) {\n    var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;\n    if (createState) {\n        return function isEqual(a, b) {\n            var _a = createState(), _b = _a.cache, cache = _b === void 0 ? circular ? new WeakMap() : undefined : _b, meta = _a.meta;\n            return comparator(a, b, {\n                cache: cache,\n                equals: equals,\n                meta: meta,\n                strict: strict,\n            });\n        };\n    }\n    if (circular) {\n        return function isEqual(a, b) {\n            return comparator(a, b, {\n                cache: new WeakMap(),\n                equals: equals,\n                meta: undefined,\n                strict: strict,\n            });\n        };\n    }\n    var state = {\n        cache: undefined,\n        equals: equals,\n        meta: undefined,\n        strict: strict,\n    };\n    return function isEqual(a, b) {\n        return comparator(a, b, state);\n    };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nvar deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nvar strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nvar circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularDeepEqual = createCustomEqual({\n    circular: true,\n    strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nvar shallowEqual = createCustomEqual({\n    createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nvar strictShallowEqual = createCustomEqual({\n    strict: true,\n    createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nvar circularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: function () { return sameValueZeroEqual; },\n    strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;\n    var config = createEqualityComparatorConfig(options);\n    var comparator = createEqualityComparator(config);\n    var equals = createCustomInternalComparator\n        ? createCustomInternalComparator(comparator)\n        : createInternalEqualityComparator(comparator);\n    return createIsEqual({ circular: circular, comparator: comparator, createState: createState, equals: equals, strict: strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","function safeRequestAnimationFrame(callback) {\n  if (typeof requestAnimationFrame !== 'undefined') requestAnimationFrame(callback);\n}\nexport default function setRafTimeout(callback) {\n  var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var currTime = -1;\n  var shouldUpdate = function shouldUpdate(now) {\n    if (currTime < 0) {\n      currTime = now;\n    }\n    if (now - currTime > timeout) {\n      callback(now);\n      currTime = -1;\n    } else {\n      safeRequestAnimationFrame(shouldUpdate);\n    }\n  };\n  requestAnimationFrame(shouldUpdate);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\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.\"); }\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); }\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; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n  var currStyle = {};\n  var handleChange = function handleChange() {\n    return null;\n  };\n  var shouldStop = false;\n  var setStyle = function setStyle(_style) {\n    if (shouldStop) {\n      return;\n    }\n    if (Array.isArray(_style)) {\n      if (!_style.length) {\n        return;\n      }\n      var styles = _style;\n      var _styles = _toArray(styles),\n        curr = _styles[0],\n        restStyles = _styles.slice(1);\n      if (typeof curr === 'number') {\n        setRafTimeout(setStyle.bind(null, restStyles), curr);\n        return;\n      }\n      setStyle(curr);\n      setRafTimeout(setStyle.bind(null, restStyles));\n      return;\n    }\n    if (_typeof(_style) === 'object') {\n      currStyle = _style;\n      handleChange(currStyle);\n    }\n    if (typeof _style === 'function') {\n      _style();\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 _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\n\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/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n  return name.replace(/([A-Z])/g, function (v) {\n    return \"-\".concat(v.toLowerCase());\n  });\n};\nexport var log = function log() {\n  var _console;\n  (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n  return function (item) {\n    log(name, item);\n    return item;\n  };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\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    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/*\n * @description: map object on every element in this object.\n * (function, object) => object\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};\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    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(); }\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.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\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.\"); }\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); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n  return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\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};\nvar cubicBezier = function cubicBezier(c1, c2) {\n  return function (t) {\n    var params = cubicBezierFactor(c1, c2);\n    return multyTime(params, t);\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};\n\n// calculate cubic-bezier using Newton's method\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  var x1 = args[0],\n    y1 = args[1],\n    x2 = args[2],\n    y2 = args[3];\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      case 'ease':\n        x1 = 0.25;\n        y1 = 0.1;\n        x2 = 0.25;\n        y2 = 1.0;\n        break;\n      case 'ease-in':\n        x1 = 0.42;\n        y1 = 0.0;\n        x2 = 1.0;\n        y2 = 1.0;\n        break;\n      case 'ease-out':\n        x1 = 0.42;\n        y1 = 0.0;\n        x2 = 0.58;\n        y2 = 1.0;\n        break;\n      case 'ease-in-out':\n        x1 = 0.0;\n        y1 = 0.0;\n        x2 = 0.58;\n        y2 = 1.0;\n        break;\n      default:\n        {\n          var easing = args[0].split('(');\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            var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\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  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  var rangeValue = function rangeValue(value) {\n    if (value > 1) {\n      return 1;\n    }\n    if (value < 0) {\n      return 0;\n    }\n    return value;\n  };\n  var bezier = function bezier(_t) {\n    var t = _t > 1 ? 1 : _t;\n    var x = t;\n    for (var i = 0; i < 8; ++i) {\n      var evalT = curveX(x) - t;\n      var derVal = derCurveX(x);\n      if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n        return curveY(x);\n      }\n      x = rangeValue(x - evalT / derVal);\n    }\n    return curveY(x);\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  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    if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n      return [destX, 0];\n    }\n    return [newX, newV];\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  var easing = args[0];\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      case 'spring':\n        return configSpring();\n      default:\n        if (easing.split('(')[0] === 'cubic-bezier') {\n          return configBezier(easing);\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  if (typeof easing === 'function') {\n    return easing;\n  }\n  warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n  return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\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.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\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.\"); }\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); }\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; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n  return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n  var from = _ref.from,\n    to = _ref.to;\n  return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\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      return _objectSpread(_objectSpread({}, val), {}, {\n        from: newX,\n        velocity: newV\n      });\n    }\n    return val;\n  }, preVals);\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      return val;\n    }, preVals);\n  }\n  return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\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  var update = function update() {\n    return null;\n  };\n  var getCurrStyle = function getCurrStyle() {\n    return mapObject(function (key, val) {\n      return val.from;\n    }, stepperStyle);\n  };\n  var shouldStopAnimation = function shouldStopAnimation() {\n    return !Object.values(stepperStyle).filter(needContinue).length;\n  };\n\n  // stepper timing function like spring\n  var stepperUpdate = function stepperUpdate(now) {\n    if (!preTime) {\n      preTime = now;\n    }\n    var deltaTime = now - preTime;\n    var steps = deltaTime / easing.dt;\n    stepperStyle = calStepperVals(easing, stepperStyle, steps);\n    // get union set and add compatible prefix\n    render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n    preTime = now;\n    if (!shouldStopAnimation()) {\n      cafId = requestAnimationFrame(update);\n    }\n  };\n\n  // t => val timing function like cubic-bezier\n  var timingUpdate = function timingUpdate(now) {\n    if (!beginTime) {\n      beginTime = now;\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);\n\n    // get union set and add compatible prefix\n    render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n    if (t < 1) {\n      cafId = requestAnimationFrame(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  update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n  // return start animation method\n  return function () {\n    requestAnimationFrame(update);\n\n    // return stop animation method\n    return function () {\n      cancelAnimationFrame(cafId);\n    };\n  };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\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; }\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; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\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.\"); }\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); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Animate, _PureComponent);\n  var _super = _createSuper(Animate);\n  function Animate(props, context) {\n    var _this;\n    _classCallCheck(this, Animate);\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      duration = _this$props.duration;\n    _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n    _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n    if (!isActive || duration <= 0) {\n      _this.state = {\n        style: {}\n      };\n\n      // if children is a function and animation is not active, set style to 'to'\n      if (typeof children === 'function') {\n        _this.state = {\n          style: to\n        };\n      }\n      return _possibleConstructorReturn(_this);\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      _this.state = {\n        style: attributeName ? _defineProperty({}, attributeName, from) : from\n      };\n    } else {\n      _this.state = {\n        style: {}\n      };\n    }\n    return _this;\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      if (!isActive || !canBegin) {\n        return;\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        to = _this$props3.to,\n        currentFrom = _this$props3.from;\n      var style = this.state.style;\n      if (!canBegin) {\n        return;\n      }\n      if (!isActive) {\n        var newState = {\n          style: attributeName ? _defineProperty({}, attributeName, to) : to\n        };\n        if (this.state && style) {\n          if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n            // eslint-disable-next-line react/no-did-update-set-state\n            this.setState(newState);\n          }\n        }\n        return;\n      }\n      if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n        return;\n      }\n      var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n      if (this.manager) {\n        this.manager.stop();\n      }\n      if (this.stopJSAnimation) {\n        this.stopJSAnimation();\n      }\n      var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n      if (this.state && style) {\n        var _newState = {\n          style: attributeName ? _defineProperty({}, attributeName, from) : from\n        };\n        if (attributeName && [attributeName] !== from || !attributeName && style !== from) {\n          // eslint-disable-next-line react/no-did-update-set-state\n          this.setState(_newState);\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      var onAnimationEnd = this.props.onAnimationEnd;\n      if (this.unSubscribe) {\n        this.unSubscribe();\n      }\n      if (this.manager) {\n        this.manager.stop();\n        this.manager = null;\n      }\n      if (this.stopJSAnimation) {\n        this.stopJSAnimation();\n      }\n      if (onAnimationEnd) {\n        onAnimationEnd();\n      }\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: \"runJSAnimation\",\n    value: function runJSAnimation(props) {\n      var _this2 = this;\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      var finalStartAnimation = function finalStartAnimation() {\n        _this2.stopJSAnimation = startAnimation();\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      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      var addStyle = function addStyle(sequence, nextItem, index) {\n        if (index === 0) {\n          return sequence;\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        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        var transition = getTransitionVal(properties, duration, easing);\n        var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n          transition: transition\n        });\n        return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\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      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      if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n        this.runJSAnimation(props);\n        return;\n      }\n      if (steps.length > 1) {\n        this.runStepAnimation(props);\n        return;\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: \"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, _excluded);\n      var count = Children.count(children);\n      // eslint-disable-next-line react/destructuring-assignment\n      var stateStyle = this.state.style;\n      if (typeof children === 'function') {\n        return children(stateStyle);\n      }\n      if (!isActive || count === 0 || duration <= 0) {\n        return children;\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      if (count === 1) {\n        return cloneContainer(Children.only(children));\n      }\n      return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n        return cloneContainer(child);\n      }));\n    }\n  }]);\n  return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\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};\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};\nexport default Animate;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\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 */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) 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\nexport function 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\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return 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}\nexport function 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 (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = 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] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = 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}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\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/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` 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 `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  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\nvar TransitionGroup = /*#__PURE__*/function (_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(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\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 ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = 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 contextValue = this.state.contextValue;\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 /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` 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 `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` 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.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.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.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.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.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","export default {\n  disabled: false\n};","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var 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: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\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 *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\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\nvar Transition = /*#__PURE__*/function (_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; // 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  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  var _proto = Transition.prototype;\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      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\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(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\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 || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\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(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\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      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\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        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\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'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\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   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\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 = 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. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\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 = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","var _excluded = [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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; }\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; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\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  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  if (Number.isFinite(duration)) {\n    return duration;\n  }\n  return 0;\n};\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n  _inherits(AnimateGroupChild, _Component);\n  var _super = _createSuper(AnimateGroupChild);\n  function AnimateGroupChild() {\n    var _this;\n    _classCallCheck(this, AnimateGroupChild);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"handleEnter\", function (node, isAppearing) {\n      var _this$props = _this.props,\n        appearOptions = _this$props.appearOptions,\n        enterOptions = _this$props.enterOptions;\n      _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"handleExit\", function () {\n      var leaveOptions = _this.props.leaveOptions;\n      _this.handleStyleActive(leaveOptions);\n    });\n    _this.state = {\n      isActive: false\n    };\n    return _this;\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      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, _excluded);\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  return AnimateGroupChild;\n}(Component);\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';\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    }, child);\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 AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup };\nexport default Animate;","/**\n * @fileOverview Rectangle\n */\nimport React, { SVGProps, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { AnimationDuration, AnimationTiming } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nexport type RectRadius = [number, number, number, number];\n\nconst getRectanglePath = (x: number, y: number, width: number, height: number, radius: number | RectRadius): string => {\n  const maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n  const ySign = height >= 0 ? 1 : -1;\n  const xSign = width >= 0 ? 1 : -1;\n  const clockWise = (height >= 0 && width >= 0) || (height < 0 && width < 0) ? 1 : 0;\n  let path;\n\n  if (maxRadius > 0 && radius instanceof Array) {\n    const newRadius: RectRadius = [0, 0, 0, 0];\n    for (let i = 0, len = 4; i < len; i++) {\n      newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n    }\n\n    path = `M${x},${y + ySign * newRadius[0]}`;\n\n    if (newRadius[0] > 0) {\n      path += `A ${newRadius[0]},${newRadius[0]},0,0,${clockWise},${x + xSign * newRadius[0]},${y}`;\n    }\n\n    path += `L ${x + width - xSign * newRadius[1]},${y}`;\n\n    if (newRadius[1] > 0) {\n      path += `A ${newRadius[1]},${newRadius[1]},0,0,${clockWise},\n        ${x + width},${y + ySign * newRadius[1]}`;\n    }\n    path += `L ${x + width},${y + height - ySign * newRadius[2]}`;\n\n    if (newRadius[2] > 0) {\n      path += `A ${newRadius[2]},${newRadius[2]},0,0,${clockWise},\n        ${x + width - xSign * newRadius[2]},${y + height}`;\n    }\n    path += `L ${x + xSign * newRadius[3]},${y + height}`;\n\n    if (newRadius[3] > 0) {\n      path += `A ${newRadius[3]},${newRadius[3]},0,0,${clockWise},\n        ${x},${y + height - ySign * newRadius[3]}`;\n    }\n    path += 'Z';\n  } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n    const newRadius = Math.min(maxRadius, radius);\n\n    path = `M ${x},${y + ySign * newRadius}\n            A ${newRadius},${newRadius},0,0,${clockWise},${x + xSign * newRadius},${y}\n            L ${x + width - xSign * newRadius},${y}\n            A ${newRadius},${newRadius},0,0,${clockWise},${x + width},${y + ySign * newRadius}\n            L ${x + width},${y + height - ySign * newRadius}\n            A ${newRadius},${newRadius},0,0,${clockWise},${x + width - xSign * newRadius},${y + height}\n            L ${x + xSign * newRadius},${y + height}\n            A ${newRadius},${newRadius},0,0,${clockWise},${x},${y + height - ySign * newRadius} Z`;\n  } else {\n    path = `M ${x},${y} h ${width} v ${height} h ${-width} Z`;\n  }\n\n  return path;\n};\ninterface RectangleProps {\n  className?: string;\n  x?: number;\n  y?: number;\n  width?: number;\n  height?: number;\n  radius?: number | RectRadius;\n  isAnimationActive?: boolean;\n  isUpdateAnimationActive?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n}\n\nexport const isInRectangle = (\n  point: { x: number; y: number },\n  rect: { x: number; y: number; width: number; height: number },\n): boolean => {\n  if (!point || !rect) {\n    return false;\n  }\n  const { x: px, y: py } = point;\n  const { x, y, width, height } = rect;\n\n  if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n    const minX = Math.min(x, x + width);\n    const maxX = Math.max(x, x + width);\n    const minY = Math.min(y, y + height);\n    const maxY = Math.max(y, y + height);\n\n    return px >= minX && px <= maxX && py >= minY && py <= maxY;\n  }\n\n  return false;\n};\n\nexport type Props = Omit<SVGProps<SVGPathElement>, 'radius'> & RectangleProps;\n\nconst 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};\n\nexport const Rectangle: React.FC<Props> = rectangleProps => {\n  const props = { ...defaultProps, ...rectangleProps };\n  const pathRef = useRef<SVGPathElement>();\n  const [totalLength, setTotalLength] = useState(-1);\n\n  useEffect(() => {\n    if (pathRef.current && pathRef.current.getTotalLength) {\n      try {\n        const pathTotalLength = pathRef.current.getTotalLength();\n\n        if (pathTotalLength) {\n          setTotalLength(pathTotalLength);\n        }\n      } catch (err) {\n        // calculate total length error\n      }\n    }\n  }, []);\n\n  const { x, y, width, height, radius, className } = props;\n  const { animationEasing, animationDuration, animationBegin, isAnimationActive, isUpdateAnimationActive } = props;\n\n  if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n    return null;\n  }\n\n  const layerClass = clsx('recharts-rectangle', className);\n  if (!isUpdateAnimationActive) {\n    return (\n      <path {...filterProps(props, true)} className={layerClass} d={getRectanglePath(x, y, width, height, radius)} />\n    );\n  }\n\n  return (\n    <Animate\n      canBegin={totalLength > 0}\n      from={{ width, height, x, y }}\n      to={{ width, height, x, y }}\n      duration={animationDuration}\n      animationEasing={animationEasing}\n      isActive={isUpdateAnimationActive}\n    >\n      {({ width: currWidth, height: currHeight, x: currX, y: currY }: any) => (\n        <Animate\n          canBegin={totalLength > 0}\n          from={`0px ${totalLength === -1 ? 1 : totalLength}px`}\n          to={`${totalLength}px 0px`}\n          attributeName=\"strokeDasharray\"\n          begin={animationBegin}\n          duration={animationDuration}\n          isActive={isAnimationActive}\n          easing={animationEasing}\n        >\n          <path\n            {...filterProps(props, true)}\n            className={layerClass}\n            d={getRectanglePath(currX, currY, currWidth, currHeight, radius)}\n            ref={pathRef}\n          />\n        </Animate>\n      )}\n    </Animate>\n  );\n};\n","/**\n * @fileOverview Polygon\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { Coordinate } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nconst isValidatePoint = (point: Coordinate) => {\n  return point && point.x === +point.x && point.y === +point.y;\n};\n\nconst getParsedPoints = (points: Coordinate[] = []) => {\n  let segmentPoints: Coordinate[][] = [[]];\n\n  points.forEach(entry => {\n    if (isValidatePoint(entry)) {\n      segmentPoints[segmentPoints.length - 1].push(entry);\n    } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n      // add another path\n      segmentPoints.push([]);\n    }\n  });\n\n  if (isValidatePoint(points[0])) {\n    segmentPoints[segmentPoints.length - 1].push(points[0]);\n  }\n\n  if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n    segmentPoints = segmentPoints.slice(0, -1);\n  }\n\n  return segmentPoints;\n};\n\nconst getSinglePolygonPath = (points: Coordinate[], connectNulls?: boolean) => {\n  let segmentPoints = getParsedPoints(points);\n\n  if (connectNulls) {\n    segmentPoints = [\n      segmentPoints.reduce((res: Coordinate[], segPoints: Coordinate[]) => {\n        return [...res, ...segPoints];\n      }, []),\n    ];\n  }\n\n  const polygonPath = segmentPoints\n    .map(segPoints => {\n      return segPoints.reduce((path: string, point: Coordinate, index: number) => {\n        return `${path}${index === 0 ? 'M' : 'L'}${point.x},${point.y}`;\n      }, '');\n    })\n    .join('');\n\n  return segmentPoints.length === 1 ? `${polygonPath}Z` : polygonPath;\n};\n\nconst getRanglePath = (points: Coordinate[], baseLinePoints: Coordinate[], connectNulls?: boolean) => {\n  const outerPath = getSinglePolygonPath(points, connectNulls);\n\n  return `${outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath}L${getSinglePolygonPath(\n    baseLinePoints.reverse(),\n    connectNulls,\n  ).slice(1)}`;\n};\n\ninterface PolygonProps {\n  className?: string;\n  points?: Coordinate[];\n  baseLinePoints?: Coordinate[];\n  connectNulls?: boolean;\n}\n\nexport type Props = Omit<SVGProps<SVGPolygonElement>, 'points'> & PolygonProps;\n\nexport const Polygon: React.FC<Props> = props => {\n  const { points, className, baseLinePoints, connectNulls, ...others } = props;\n\n  if (!points || !points.length) {\n    return null;\n  }\n\n  const layerClass = clsx('recharts-polygon', className);\n\n  if (baseLinePoints && baseLinePoints.length) {\n    const hasStroke = others.stroke && others.stroke !== 'none';\n    const rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n\n    return (\n      <g className={layerClass}>\n        <path\n          {...filterProps(others, true)}\n          fill={rangePath.slice(-1) === 'Z' ? others.fill : 'none'}\n          stroke=\"none\"\n          d={rangePath}\n        />\n        {hasStroke ? (\n          <path {...filterProps(others, true)} fill=\"none\" d={getSinglePolygonPath(points, connectNulls)} />\n        ) : null}\n        {hasStroke ? (\n          <path {...filterProps(others, true)} fill=\"none\" d={getSinglePolygonPath(baseLinePoints, connectNulls)} />\n        ) : null}\n      </g>\n    );\n  }\n\n  const singlePath = getSinglePolygonPath(points, connectNulls);\n\n  return (\n    <path\n      {...filterProps(others, true)}\n      fill={singlePath.slice(-1) === 'Z' ? others.fill : 'none'}\n      className={layerClass}\n      d={singlePath}\n    />\n  );\n};\n","/**\n * @fileOverview Dot\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { PresentationAttributesWithProps, adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface DotProps {\n  className?: string;\n  cx?: number;\n  cy?: number;\n  r?: number;\n  clipDot?: boolean;\n}\n\nexport type Props = PresentationAttributesWithProps<DotProps, SVGCircleElement> & DotProps;\n\nexport const Dot: React.FC<Props> = props => {\n  const { cx, cy, r, className } = props;\n  const layerClass = clsx('recharts-dot', className);\n\n  if (cx === +cx && cy === +cy && r === +r) {\n    return (\n      <circle\n        {...filterProps(props, false)}\n        {...adaptEventHandlers(props)}\n        className={layerClass}\n        cx={cx}\n        cy={cy}\n        r={r}\n      />\n    );\n  }\n\n  return null;\n};\n","/**\n * @fileOverview Cross\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface CrossProps {\n  x?: number;\n  y?: number;\n  width?: number;\n  height?: number;\n  top?: number;\n  left?: number;\n  className?: number;\n}\n\nexport type Props = SVGProps<SVGPathElement> & CrossProps;\n\nconst getPath = (x: number, y: number, width: number, height: number, top: number, left: number) => {\n  return `M${x},${top}v${height}M${left},${y}h${width}`;\n};\n\nexport const Cross: React.FC<Props> = ({\n  x = 0,\n  y = 0,\n  top = 0,\n  left = 0,\n  width = 0,\n  height = 0,\n  className,\n  ...rest\n}) => {\n  const props = { x, y, top, left, width, height, ...rest };\n\n  if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n    return null;\n  }\n\n  return (\n    <path\n      {...filterProps(props, true)}\n      className={clsx('recharts-cross', className)}\n      d={getPath(x, y, width, height, top, left)}\n    />\n  );\n};\n","/**\n * @fileOverview Polar Grid\n */\nimport React, { SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/ReactUtils';\n\ninterface PolarGridProps {\n  cx?: number;\n  cy?: number;\n  innerRadius?: number;\n  outerRadius?: number;\n\n  polarAngles?: number[];\n  polarRadius?: number[];\n  gridType?: 'polygon' | 'circle';\n  radialLines?: boolean;\n}\nexport type Props = SVGProps<SVGPathElement> & PolarGridProps;\n\ntype ConcentricProps = Props & {\n  // The radius of circle\n  radius: number;\n  // The index of circle\n  index: number;\n};\n\nconst getPolygonPath = (radius: number, cx: number, cy: number, polarAngles: number[]) => {\n  let path = '';\n\n  polarAngles.forEach((angle: number, i: number) => {\n    const point = polarToCartesian(cx, cy, radius, angle);\n\n    if (i) {\n      path += `L ${point.x},${point.y}`;\n    } else {\n      path += `M ${point.x},${point.y}`;\n    }\n  });\n  path += 'Z';\n\n  return path;\n};\n\n// Draw axis of radial line\nconst PolarAngles: React.FC<Props> = props => {\n  const { cx, cy, innerRadius, outerRadius, polarAngles, radialLines } = props;\n\n  if (!polarAngles || !polarAngles.length || !radialLines) {\n    return null;\n  }\n  const polarAnglesProps = {\n    stroke: '#ccc',\n    ...filterProps(props, false),\n  };\n\n  return (\n    <g className=\"recharts-polar-grid-angle\">\n      {polarAngles.map(entry => {\n        const start = polarToCartesian(cx, cy, innerRadius, entry);\n        const end = polarToCartesian(cx, cy, outerRadius, entry);\n\n        return <line {...polarAnglesProps} key={`line-${entry}`} x1={start.x} y1={start.y} x2={end.x} y2={end.y} />;\n      })}\n    </g>\n  );\n};\n\n// Draw concentric circles\nconst ConcentricCircle: React.FC<ConcentricProps> = props => {\n  const { cx, cy, radius, index } = props;\n  const concentricCircleProps = {\n    stroke: '#ccc',\n    ...filterProps(props, false),\n    fill: 'none',\n  };\n\n  return (\n    <circle\n      {...concentricCircleProps}\n      className={clsx('recharts-polar-grid-concentric-circle', props.className)}\n      key={`circle-${index}`}\n      cx={cx}\n      cy={cy}\n      r={radius}\n    />\n  );\n};\n\n// Draw concentric polygons\nconst ConcentricPolygon: React.FC<ConcentricProps> = props => {\n  const { radius, index } = props;\n  const concentricPolygonProps = {\n    stroke: '#ccc',\n    ...filterProps(props, false),\n    fill: 'none',\n  };\n\n  return (\n    <path\n      {...concentricPolygonProps}\n      className={clsx('recharts-polar-grid-concentric-polygon', props.className)}\n      key={`path-${index}`}\n      d={getPolygonPath(radius, props.cx, props.cy, props.polarAngles)}\n    />\n  );\n};\n\n// Draw concentric axis\n// TODO Optimize the name\nconst ConcentricPath: React.FC<Props> = props => {\n  const { polarRadius, gridType } = props;\n\n  if (!polarRadius || !polarRadius.length) {\n    return null;\n  }\n\n  return (\n    <g className=\"recharts-polar-grid-concentric\">\n      {polarRadius.map((entry: number, i: number) => {\n        const key = i;\n        if (gridType === 'circle') return <ConcentricCircle key={key} {...props} radius={entry} index={i} />;\n        return <ConcentricPolygon key={key} {...props} radius={entry} index={i} />;\n      })}\n    </g>\n  );\n};\n\nexport const PolarGrid = ({\n  cx = 0,\n  cy = 0,\n  innerRadius = 0,\n  outerRadius = 0,\n  gridType = 'polygon',\n  radialLines = true,\n  ...props\n}: Props) => {\n  if (outerRadius <= 0) {\n    return null;\n  }\n\n  return (\n    <g className=\"recharts-polar-grid\">\n      <PolarAngles\n        cx={cx}\n        cy={cy}\n        innerRadius={innerRadius}\n        outerRadius={outerRadius}\n        gridType={gridType}\n        radialLines={radialLines}\n        {...props}\n      />\n      <ConcentricPath\n        cx={cx}\n        cy={cy}\n        innerRadius={innerRadius}\n        outerRadius={outerRadius}\n        gridType={gridType}\n        radialLines={radialLines}\n        {...props}\n      />\n    </g>\n  );\n};\n\nPolarGrid.displayName = 'PolarGrid';\n","/**\n * @fileOverview The axis of polar coordinate system\n */\nimport React, { PureComponent } from 'react';\nimport maxBy from 'lodash/maxBy';\nimport minBy from 'lodash/minBy';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Layer } from '../container/Layer';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\nimport { BaseAxisProps, TickItem, adaptEventsOfChild, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nexport interface PolarRadiusAxisProps extends Omit<BaseAxisProps, 'unit'> {\n  cx?: number;\n  cy?: number;\n  radiusAxisId?: string | number;\n  angle?: number;\n  orientation?: 'left' | 'right' | 'middle';\n  ticks?: TickItem[];\n  reversed?: boolean;\n}\n\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGElement> & PolarRadiusAxisProps;\n\nexport class PolarRadiusAxis extends PureComponent<Props> {\n  static displayName = 'PolarRadiusAxis';\n\n  static axisType = 'radiusAxis';\n\n  static defaultProps = {\n    type: 'number',\n    radiusAxisId: 0,\n    cx: 0,\n    cy: 0,\n    angle: 0,\n    orientation: 'right',\n    stroke: '#ccc',\n    axisLine: true,\n    tick: true,\n    tickCount: 5,\n    allowDataOverflow: false,\n    scale: 'auto',\n    allowDuplicatedCategory: true,\n  };\n\n  /**\n   * Calculate the coordinate of tick\n   * @param  {Number} coordinate The radius of tick\n   * @return {Object} (x, y)\n   */\n  getTickValueCoord({ coordinate }: TickItem) {\n    const { angle, cx, cy } = this.props;\n\n    return polarToCartesian(cx, cy, coordinate, angle);\n  }\n\n  getTickTextAnchor() {\n    const { orientation } = this.props;\n    let textAnchor;\n\n    switch (orientation) {\n      case 'left':\n        textAnchor = 'end';\n        break;\n      case 'right':\n        textAnchor = 'start';\n        break;\n      default:\n        textAnchor = 'middle';\n        break;\n    }\n\n    return textAnchor;\n  }\n\n  getViewBox() {\n    const { cx, cy, angle, ticks } = this.props;\n    const maxRadiusTick = maxBy(ticks, (entry: TickItem) => entry.coordinate || 0);\n    const minRadiusTick = minBy(ticks, (entry: TickItem) => entry.coordinate || 0);\n\n    return {\n      cx,\n      cy,\n      startAngle: angle,\n      endAngle: angle,\n      innerRadius: minRadiusTick.coordinate || 0,\n      outerRadius: maxRadiusTick.coordinate || 0,\n    };\n  }\n\n  renderAxisLine() {\n    const { cx, cy, angle, ticks, axisLine, ...others } = this.props;\n    const extent = ticks.reduce(\n      (result, entry) => [Math.min(result[0], entry.coordinate), Math.max(result[1], entry.coordinate)],\n      [Infinity, -Infinity],\n    );\n    const point0 = polarToCartesian(cx, cy, extent[0], angle);\n    const point1 = polarToCartesian(cx, cy, extent[1], angle);\n\n    const props = {\n      ...filterProps(others, false),\n      fill: 'none',\n      ...filterProps(axisLine, false),\n      x1: point0.x,\n      y1: point0.y,\n      x2: point1.x,\n      y2: point1.y,\n    };\n\n    return <line className=\"recharts-polar-radius-axis-line\" {...props} />;\n  }\n\n  static renderTickItem(option: Props['tick'], props: any, value: string | number) {\n    let tickItem;\n\n    if (React.isValidElement(option)) {\n      tickItem = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      tickItem = option(props);\n    } else {\n      tickItem = (\n        <Text {...props} className=\"recharts-polar-radius-axis-tick-value\">\n          {value}\n        </Text>\n      );\n    }\n\n    return tickItem;\n  }\n\n  renderTicks() {\n    const { ticks, tick, angle, tickFormatter, stroke, ...others } = this.props;\n    const textAnchor = this.getTickTextAnchor();\n    const axisProps = filterProps(others, false);\n    const customTickProps = filterProps(tick, false);\n\n    const items = ticks.map((entry, i) => {\n      const coord = this.getTickValueCoord(entry);\n      const tickProps = {\n        textAnchor,\n        transform: `rotate(${90 - angle}, ${coord.x}, ${coord.y})`,\n        ...axisProps,\n        stroke: 'none',\n        fill: stroke,\n        ...customTickProps,\n        index: i,\n        ...coord,\n        payload: entry,\n      };\n\n      return (\n        <Layer\n          className={clsx('recharts-polar-radius-axis-tick', getTickClassName(tick))}\n          key={`tick-${entry.coordinate}`}\n          {...adaptEventsOfChild(this.props, entry, i)}\n        >\n          {PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value)}\n        </Layer>\n      );\n    });\n\n    return <Layer className=\"recharts-polar-radius-axis-ticks\">{items}</Layer>;\n  }\n\n  render() {\n    const { ticks, axisLine, tick } = this.props;\n\n    if (!ticks || !ticks.length) {\n      return null;\n    }\n\n    return (\n      <Layer className={clsx('recharts-polar-radius-axis', this.props.className)}>\n        {axisLine && this.renderAxisLine()}\n        {tick && this.renderTicks()}\n        {Label.renderCallByParent(this.props, this.getViewBox())}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Axis of radial direction\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Polygon } from '../shape/Polygon';\nimport { Text } from '../component/Text';\nimport { BaseAxisProps, TickItem, adaptEventsOfChild, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\n\nconst RADIAN = Math.PI / 180;\nconst eps = 1e-5;\nexport interface PolarAngleAxisProps extends BaseAxisProps {\n  angleAxisId?: string | number;\n  cx?: number;\n  cy?: number;\n  radius?: number;\n\n  axisLineType?: 'polygon' | 'circle';\n  ticks?: TickItem[];\n  orientation?: 'inner' | 'outer';\n}\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGTextElement> & PolarAngleAxisProps;\n\nexport class PolarAngleAxis extends PureComponent<Props> {\n  static displayName = 'PolarAngleAxis';\n\n  static axisType = 'angleAxis';\n\n  static defaultProps = {\n    type: 'category',\n    angleAxisId: 0,\n    scale: 'auto',\n    cx: 0,\n    cy: 0,\n    orientation: 'outer',\n    axisLine: true,\n    tickLine: true,\n    tickSize: 8,\n    tick: true,\n    hide: false,\n    allowDuplicatedCategory: true,\n  };\n\n  /**\n   * Calculate the coordinate of line endpoint\n   * @param  {Object} data The Data if ticks\n   * @return {Object} (x0, y0): The start point of text,\n   *                  (x1, y1): The end point close to text,\n   *                  (x2, y2): The end point close to axis\n   */\n  getTickLineCoord(data: TickItem) {\n    const { cx, cy, radius, orientation, tickSize } = this.props;\n    const tickLineSize = tickSize || 8;\n    const p1 = polarToCartesian(cx, cy, radius, data.coordinate);\n    const p2 = polarToCartesian(cx, cy, radius + (orientation === 'inner' ? -1 : 1) * tickLineSize, data.coordinate);\n\n    return { x1: p1.x, y1: p1.y, x2: p2.x, y2: p2.y };\n  }\n\n  /**\n   * Get the text-anchor of each tick\n   * @param  {Object} data Data of ticks\n   * @return {String} text-anchor\n   */\n  getTickTextAnchor(data: TickItem) {\n    const { orientation } = this.props;\n    const cos = Math.cos(-data.coordinate * RADIAN);\n    let textAnchor;\n\n    if (cos > eps) {\n      textAnchor = orientation === 'outer' ? 'start' : 'end';\n    } else if (cos < -eps) {\n      textAnchor = orientation === 'outer' ? 'end' : 'start';\n    } else {\n      textAnchor = 'middle';\n    }\n\n    return textAnchor;\n  }\n\n  renderAxisLine() {\n    const { cx, cy, radius, axisLine, axisLineType } = this.props;\n    const props = {\n      ...filterProps(this.props, false),\n      fill: 'none',\n      ...filterProps(axisLine, false),\n    };\n\n    if (axisLineType === 'circle') {\n      return <Dot className=\"recharts-polar-angle-axis-line\" {...props} cx={cx} cy={cy} r={radius} />;\n    }\n    const { ticks } = this.props;\n    const points = ticks.map(entry => polarToCartesian(cx, cy, radius, entry.coordinate));\n\n    return <Polygon className=\"recharts-polar-angle-axis-line\" {...props} points={points} />;\n  }\n\n  static renderTickItem(option: PolarAngleAxisProps['tick'], props: any, value: string | number) {\n    let tickItem;\n\n    if (React.isValidElement(option)) {\n      tickItem = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      tickItem = option(props);\n    } else {\n      tickItem = (\n        <Text {...props} className=\"recharts-polar-angle-axis-tick-value\">\n          {value}\n        </Text>\n      );\n    }\n\n    return tickItem;\n  }\n\n  renderTicks() {\n    const { ticks, tick, tickLine, tickFormatter, stroke } = this.props;\n    const axisProps = filterProps(this.props, false);\n    const customTickProps = filterProps(tick, false);\n    const tickLineProps = {\n      ...axisProps,\n      fill: 'none',\n      ...filterProps(tickLine, false),\n    };\n\n    const items = ticks.map((entry, i) => {\n      const lineCoord = this.getTickLineCoord(entry);\n      const textAnchor = this.getTickTextAnchor(entry);\n      const tickProps = {\n        textAnchor,\n        ...axisProps,\n        stroke: 'none',\n        fill: stroke,\n        ...customTickProps,\n        index: i,\n        payload: entry,\n        x: lineCoord.x2,\n        y: lineCoord.y2,\n      };\n\n      return (\n        <Layer\n          className={clsx('recharts-polar-angle-axis-tick', getTickClassName(tick))}\n          key={`tick-${entry.coordinate}`}\n          {...adaptEventsOfChild(this.props, entry, i)}\n        >\n          {tickLine && <line className=\"recharts-polar-angle-axis-tick-line\" {...tickLineProps} {...lineCoord} />}\n          {tick &&\n            PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value)}\n        </Layer>\n      );\n    });\n\n    return <Layer className=\"recharts-polar-angle-axis-ticks\">{items}</Layer>;\n  }\n\n  render() {\n    const { ticks, radius, axisLine } = this.props;\n\n    if (radius <= 0 || !ticks || !ticks.length) {\n      return null;\n    }\n\n    return (\n      <Layer className={clsx('recharts-polar-angle-axis', this.props.className)}>\n        {axisLine && this.renderAxisLine()}\n        {this.renderTicks()}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Rectangle\n */\nimport React, { SVGProps, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { AnimationDuration, AnimationTiming } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nconst getTrapezoidPath = (x: number, y: number, upperWidth: number, lowerWidth: number, height: number): string => {\n  const widthGap = upperWidth - lowerWidth;\n  let path;\n  path = `M ${x},${y}`;\n  path += `L ${x + upperWidth},${y}`;\n  path += `L ${x + upperWidth - widthGap / 2},${y + height}`;\n  path += `L ${x + upperWidth - widthGap / 2 - lowerWidth},${y + height}`;\n  path += `L ${x},${y} Z`;\n  return path;\n};\n\ninterface TrapezoidProps {\n  className?: string;\n  x?: number;\n  y?: number;\n  upperWidth?: number;\n  lowerWidth?: number;\n  height?: number;\n\n  isUpdateAnimationActive?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n}\n\nexport type Props = SVGProps<SVGPathElement> & TrapezoidProps;\n\nconst defaultProps: Props = {\n  x: 0,\n  y: 0,\n  upperWidth: 0,\n  lowerWidth: 0,\n  height: 0,\n  isUpdateAnimationActive: false,\n  animationBegin: 0,\n  animationDuration: 1500,\n  animationEasing: 'ease',\n};\n\nexport const Trapezoid: React.FC<Props> = props => {\n  const trapezoidProps: Props = { ...defaultProps, ...props };\n\n  const pathRef = useRef<SVGPathElement>();\n  const [totalLength, setTotalLength] = useState(-1);\n\n  useEffect(() => {\n    if (pathRef.current && pathRef.current.getTotalLength) {\n      try {\n        const pathTotalLength = pathRef.current.getTotalLength();\n\n        if (pathTotalLength) {\n          setTotalLength(pathTotalLength);\n        }\n      } catch (err) {\n        // calculate total length error\n      }\n    }\n  }, []);\n\n  const { x, y, upperWidth, lowerWidth, height, className } = trapezoidProps;\n  const { animationEasing, animationDuration, animationBegin, isUpdateAnimationActive } = trapezoidProps;\n\n  if (\n    x !== +x ||\n    y !== +y ||\n    upperWidth !== +upperWidth ||\n    lowerWidth !== +lowerWidth ||\n    height !== +height ||\n    (upperWidth === 0 && lowerWidth === 0) ||\n    height === 0\n  ) {\n    return null;\n  }\n\n  const layerClass = clsx('recharts-trapezoid', className);\n\n  if (!isUpdateAnimationActive) {\n    return (\n      <g>\n        <path\n          {...filterProps(trapezoidProps, true)}\n          className={layerClass}\n          d={getTrapezoidPath(x, y, upperWidth, lowerWidth, height)}\n        />\n      </g>\n    );\n  }\n  return (\n    <Animate\n      canBegin={totalLength > 0}\n      from={{ upperWidth: 0, lowerWidth: 0, height, x, y }}\n      to={{ upperWidth, lowerWidth, height, x, y }}\n      duration={animationDuration}\n      animationEasing={animationEasing}\n      isActive={isUpdateAnimationActive}\n    >\n      {({\n        upperWidth: currUpperWidth,\n        lowerWidth: currLowerWidth,\n        height: currHeight,\n        x: currX,\n        y: currY,\n      }: {\n        upperWidth: number;\n        lowerWidth: number;\n        height: number;\n        x: number;\n        y: number;\n      }) => (\n        <Animate\n          canBegin={totalLength > 0}\n          from={`0px ${totalLength === -1 ? 1 : totalLength}px`}\n          to={`${totalLength}px 0px`}\n          attributeName=\"strokeDasharray\"\n          begin={animationBegin}\n          duration={animationDuration}\n          easing={animationEasing}\n        >\n          <path\n            {...filterProps(trapezoidProps, true)}\n            className={layerClass}\n            d={getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight)}\n            ref={pathRef}\n          />\n        </Animate>\n      )}\n    </Animate>\n  );\n};\n","import React, { isValidElement, cloneElement, SVGProps } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isBoolean from 'lodash/isBoolean';\nimport isEqual from 'lodash/isEqual';\n\nimport { Rectangle } from '../shape/Rectangle';\nimport { Trapezoid } from '../shape/Trapezoid';\nimport { Sector } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { GraphicalItem } from '../chart/generateCategoricalChart';\nimport { Symbols, SymbolsProps } from '../shape/Symbols';\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * <Shape /> is the root and will handle taking in:\n *  - an object of svg properties\n *  - a boolean\n *  - a render prop(inline function that returns jsx)\n *  - a react element\n *\n * <ShapeSelector /> is a subcomponent of <Shape /> and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */\ntype ShapeType = 'trapezoid' | 'rectangle' | 'sector' | 'symbols';\n\nexport type ShapeProps<OptionType, ExtraProps, ShapePropsType> = {\n  shapeType: ShapeType;\n  option: OptionType;\n  isActive: boolean;\n  activeClassName?: string;\n  propTransformer?: (option: OptionType, props: unknown) => ShapePropsType;\n} & ExtraProps;\n\nfunction defaultPropTransformer<OptionType, ExtraProps, ShapePropsType>(option: OptionType, props: ExtraProps) {\n  return {\n    ...props,\n    ...option,\n  } as unknown as ShapePropsType;\n}\n\nfunction isSymbolsProps(shapeType: ShapeType, _elementProps: unknown): _elementProps is SymbolsProps {\n  return shapeType === 'symbols';\n}\n\nfunction ShapeSelector<ShapePropsType>({\n  shapeType,\n  elementProps,\n}: {\n  shapeType: ShapeType;\n  elementProps: ShapePropsType;\n}) {\n  switch (shapeType) {\n    case 'rectangle':\n      return <Rectangle {...elementProps} />;\n    case 'trapezoid':\n      return <Trapezoid {...elementProps} />;\n    case 'sector':\n      return <Sector {...elementProps} />;\n    case 'symbols':\n      if (isSymbolsProps(shapeType, elementProps)) {\n        return <Symbols {...elementProps} />;\n      }\n      break;\n    default:\n      return null;\n  }\n}\n\nexport function getPropsFromShapeOption(option: unknown): SVGProps<SVGPathElement> {\n  if (isValidElement(option)) {\n    return option.props;\n  }\n\n  return option;\n}\n\nexport function Shape<OptionType, ExtraProps, ShapePropsType>({\n  option,\n  shapeType,\n  propTransformer = defaultPropTransformer,\n  activeClassName = 'recharts-active-shape',\n  isActive,\n  ...props\n}: ShapeProps<OptionType, ExtraProps, ShapePropsType>) {\n  let shape: React.JSX.Element;\n\n  if (isValidElement(option)) {\n    shape = cloneElement(option, { ...props, ...getPropsFromShapeOption(option) });\n  } else if (isFunction(option)) {\n    shape = option(props);\n  } else if (isPlainObject(option) && !isBoolean(option)) {\n    const nextProps = propTransformer(option, props);\n    shape = <ShapeSelector<ShapePropsType> shapeType={shapeType} elementProps={nextProps} />;\n  } else {\n    const elementProps = props as unknown as ShapePropsType;\n    shape = <ShapeSelector<ShapePropsType> shapeType={shapeType} elementProps={elementProps} />;\n  }\n\n  if (isActive) {\n    return <Layer className={activeClassName}>{shape}</Layer>;\n  }\n\n  return shape;\n}\n\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */\ntype GraphicalItemShapeKey = 'trapezoids' | 'sectors' | 'points';\n\ntype FunnelItem = {\n  x: number;\n  y: number;\n  labelViewBox: { x: number; y: number };\n  tooltipPayload: Array<{ payload: { payload: ShapeData } }>;\n};\n\ntype PieItem = {\n  startAngle: number;\n  endAngle: number;\n  tooltipPayload: Array<{ payload: { payload: ShapeData } }>;\n};\n\ntype ScatterItem = {\n  x: number;\n  y: number;\n  z: number;\n  payload?: ShapeData;\n};\n\ntype ShapeData = FunnelItem | PieItem | ScatterItem;\n\ntype GetActiveShapeIndexForTooltip = {\n  activeTooltipItem: ShapeData;\n  graphicalItem: GraphicalItem;\n  itemData: unknown[];\n};\n\nexport function isFunnel(graphicalItem: GraphicalItem, _item: unknown): _item is FunnelItem {\n  return _item != null && 'trapezoids' in graphicalItem.props;\n}\n\nexport function isPie(graphicalItem: GraphicalItem, _item: unknown): _item is PieItem {\n  return _item != null && 'sectors' in graphicalItem.props;\n}\n\nexport function isScatter(graphicalItem: GraphicalItem, _item: unknown): _item is ScatterItem {\n  return _item != null && 'points' in graphicalItem.props;\n}\n\nexport function compareFunnel(shapeData: FunnelItem, activeTooltipItem: FunnelItem) {\n  const xMatches = shapeData.x === activeTooltipItem?.labelViewBox?.x || shapeData.x === activeTooltipItem.x;\n  const yMatches = shapeData.y === activeTooltipItem?.labelViewBox?.y || shapeData.y === activeTooltipItem.y;\n  return xMatches && yMatches;\n}\n\nexport function comparePie(shapeData: PieItem, activeTooltipItem: PieItem) {\n  const startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n  const endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n  return startAngleMatches && endAngleMatches;\n}\n\nexport function compareScatter(shapeData: ScatterItem, activeTooltipItem: ScatterItem) {\n  const xMatches = shapeData.x === activeTooltipItem.x;\n  const yMatches = shapeData.y === activeTooltipItem.y;\n  const zMatches = shapeData.z === activeTooltipItem.z;\n  return xMatches && yMatches && zMatches;\n}\n\nfunction getComparisonFn(graphicalItem: GraphicalItem, activeItem: unknown) {\n  let comparison: (shapeData: unknown, activeTooltipData: unknown) => boolean;\n\n  if (isFunnel(graphicalItem, activeItem)) {\n    comparison = compareFunnel;\n  } else if (isPie(graphicalItem, activeItem)) {\n    comparison = comparePie;\n  } else if (isScatter(graphicalItem, activeItem)) {\n    comparison = compareScatter;\n  }\n\n  return comparison;\n}\n\nfunction getShapeDataKey(graphicalItem: GraphicalItem, activeItem: unknown): GraphicalItemShapeKey {\n  let shapeKey: GraphicalItemShapeKey;\n\n  if (isFunnel(graphicalItem, activeItem)) {\n    shapeKey = 'trapezoids';\n  } else if (isPie(graphicalItem, activeItem)) {\n    shapeKey = 'sectors';\n  } else if (isScatter(graphicalItem, activeItem)) {\n    shapeKey = 'points';\n  }\n\n  return shapeKey;\n}\n\nfunction getActiveShapeTooltipPayload(graphicalItem: GraphicalItem, activeItem: unknown): ShapeData {\n  if (isFunnel(graphicalItem, activeItem)) {\n    return activeItem.tooltipPayload?.[0]?.payload?.payload;\n  }\n  if (isPie(graphicalItem, activeItem)) {\n    return activeItem.tooltipPayload?.[0]?.payload?.payload;\n  }\n\n  if (isScatter(graphicalItem, activeItem)) {\n    return activeItem.payload;\n  }\n\n  return {} as ShapeData;\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */\nexport function getActiveShapeIndexForTooltip({\n  activeTooltipItem,\n  graphicalItem,\n  itemData,\n}: GetActiveShapeIndexForTooltip): number {\n  const shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n  const tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n\n  const activeItemMatches = itemData.filter((datum: unknown, dataIndex: number) => {\n    const valuesMatch = isEqual(tooltipPayload, datum);\n\n    const mouseCoordinateMatches = graphicalItem.props[shapeKey].filter((shapeData: unknown) => {\n      const comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n      return comparison(shapeData, activeTooltipItem);\n    });\n\n    // get the last index in case of multiple matches\n    const indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(\n      mouseCoordinateMatches[mouseCoordinateMatches.length - 1],\n    );\n\n    const coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n\n    return valuesMatch && coordinatesMatch;\n  });\n\n  // get the last index in case of multiple matches\n  const activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n\n  return activeIndex;\n}\n","/**\n * @fileOverview Render sectors of a pie\n */\nimport React, { PureComponent, ReactElement, ReactNode, SVGProps } from 'react';\nimport Animate from 'react-smooth';\nimport get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Props as SectorProps } from '../shape/Sector';\nimport { Curve } from '../shape/Curve';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { Cell, Props as CellProps } from '../component/Cell';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian, getMaxRadius } from '../util/PolarUtils';\nimport { isNumber, getPercentValue, mathSign, interpolateNumber, uniqueId } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { warn } from '../util/LogUtils';\nimport {\n  LegendType,\n  TooltipType,\n  AnimationTiming,\n  Coordinate,\n  ChartOffset,\n  DataKey,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n  AnimationDuration,\n  ActiveShape,\n} from '../util/types';\nimport { Shape } from '../util/ActiveShapeUtils';\n\ninterface PieDef {\n  /** The abscissa of pole in polar coordinate  */\n  cx?: number | string;\n  /** The ordinate of pole in polar coordinate  */\n  cy?: number | string;\n  /** The start angle of first sector */\n  startAngle?: number;\n  /** The end angle of last sector */\n  endAngle?: number;\n  paddingAngle?: number;\n  /** The inner radius of sectors */\n  innerRadius?: number | string;\n  /** The outer radius of sectors */\n  outerRadius?: number | string;\n  cornerRadius?: number | string;\n}\n\ntype PieLabelLine =\n  | ReactElement<SVGElement>\n  | ((props: any) => ReactElement<SVGElement>)\n  | SVGProps<SVGPathElement>\n  | boolean;\nexport type PieLabel<P = any> =\n  | ReactElement<SVGElement>\n  | ((props: P) => ReactNode | ReactElement<SVGElement>)\n  | (SVGProps<SVGTextElement> & { offsetRadius?: number })\n  | boolean;\nexport type PieSectorDataItem = SectorProps & {\n  percent?: number;\n  name?: string | number;\n  midAngle?: number;\n  middleRadius?: number;\n  tooltipPosition?: Coordinate;\n  value?: number;\n  paddingAngle?: number;\n  dataKey?: string;\n  payload?: any;\n};\n\ninterface PieProps extends PieDef {\n  className?: string;\n  animationId?: number;\n  dataKey: DataKey<any>;\n  nameKey?: DataKey<any>;\n  valueKey?: DataKey<any>;\n  /** Match each sector's stroke color to it's fill color */\n  blendStroke?: boolean;\n  /** The minimum angle for no-zero element */\n  minAngle?: number;\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  /** the max radius of pie */\n  maxRadius?: number;\n  hide?: boolean;\n  /** the input data */\n  data?: any[];\n  sectors?: PieSectorDataItem[];\n  activeShape?: ActiveShape<PieSectorDataItem>;\n  inactiveShape?: ActiveShape<PieSectorDataItem>;\n  labelLine?: PieLabelLine;\n  label?: PieLabel;\n\n  activeIndex?: number | number[];\n  animationEasing?: AnimationTiming;\n  isAnimationActive?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  onAnimationEnd?: () => void;\n  onAnimationStart?: () => void;\n  id?: string;\n  onMouseEnter?: (data: any, index: number, e: React.MouseEvent) => void;\n  onMouseLeave?: (data: any, index: number, e: React.MouseEvent) => void;\n  onClick?: (data: any, index: number, e: React.MouseEvent) => void;\n  rootTabIndex?: number;\n}\n\nexport interface PieLabelRenderProps extends PieDef {\n  name: string;\n  percent?: number;\n  stroke: string;\n  index?: number;\n  textAnchor: string;\n  x: number;\n  y: number;\n  [key: string]: any;\n}\n\ninterface State {\n  isAnimationFinished?: boolean;\n  prevIsAnimationActive?: boolean;\n  prevSectors?: PieSectorDataItem[];\n  curSectors?: PieSectorDataItem[];\n  prevAnimationId?: number;\n  sectorToFocus?: number;\n}\n\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGElement> & PieProps;\n\nexport class Pie extends PureComponent<Props, State> {\n  pieRef: SVGGElement = null;\n\n  sectorRefs: SVGGElement[] = [];\n\n  static displayName = 'Pie';\n\n  static defaultProps = {\n    stroke: '#fff',\n    fill: '#808080',\n    legendType: 'rect',\n    cx: '50%',\n    cy: '50%',\n    startAngle: 0,\n    endAngle: 360,\n    innerRadius: 0,\n    outerRadius: '80%',\n    paddingAngle: 0,\n    labelLine: true,\n    hide: false,\n    minAngle: 0,\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 400,\n    animationDuration: 1500,\n    animationEasing: 'ease',\n    nameKey: 'name',\n    blendStroke: false,\n    rootTabIndex: 0,\n  };\n\n  static parseDeltaAngle = (startAngle: number, endAngle: number) => {\n    const sign = mathSign(endAngle - startAngle);\n    const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n\n    return sign * deltaAngle;\n  };\n\n  static getRealPieData = (itemProps: Props) => {\n    const { data, children } = itemProps;\n    const presentationProps = filterProps(itemProps, false);\n    const cells = findAllByType(children, Cell);\n\n    if (data && data.length) {\n      return data.map((entry, index) => ({\n        payload: entry,\n        ...presentationProps,\n        ...entry,\n        ...(cells && cells[index] && cells[index].props),\n      }));\n    }\n\n    if (cells && cells.length) {\n      return cells.map((cell: ReactElement<CellProps>) => ({ ...presentationProps, ...cell.props }));\n    }\n\n    return [];\n  };\n\n  static parseCoordinateOfPie = (itemProps: Props, offset: ChartOffset) => {\n    const { top, left, width, height } = offset;\n    const maxPieRadius = getMaxRadius(width, height);\n    const cx = left + getPercentValue(itemProps.cx, width, width / 2);\n    const cy = top + getPercentValue(itemProps.cy, height, height / 2);\n    const innerRadius = getPercentValue(itemProps.innerRadius, maxPieRadius, 0);\n    const outerRadius = getPercentValue(itemProps.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n    const maxRadius = itemProps.maxRadius || Math.sqrt(width * width + height * height) / 2;\n\n    return { cx, cy, innerRadius, outerRadius, maxRadius };\n  };\n\n  static getComposedData = ({\n    item,\n    offset,\n  }: {\n    item: React.ReactElement<Props>;\n    offset: ChartOffset;\n  }): Omit<Props, 'dataKey'> => {\n    const itemProps: Props =\n      (item.type as any).defaultProps !== undefined\n        ? { ...(item.type as any).defaultProps, ...item.props }\n        : item.props;\n    const pieData = Pie.getRealPieData(itemProps);\n    if (!pieData || !pieData.length) {\n      return null;\n    }\n\n    const { cornerRadius, startAngle, endAngle, paddingAngle, dataKey, nameKey, valueKey, tooltipType } = itemProps;\n    const minAngle = Math.abs(itemProps.minAngle);\n    const coordinate = Pie.parseCoordinateOfPie(itemProps, offset);\n    const deltaAngle = Pie.parseDeltaAngle(startAngle, endAngle);\n    const absDeltaAngle = Math.abs(deltaAngle);\n\n    let realDataKey = dataKey;\n\n    if (isNil(dataKey) && isNil(valueKey)) {\n      warn(\n        false,\n        `Use \"dataKey\" to specify the value of pie,\n      the props \"valueKey\" will be deprecated in 1.1.0`,\n      );\n      realDataKey = 'value';\n    } else if (isNil(dataKey)) {\n      warn(\n        false,\n        `Use \"dataKey\" to specify the value of pie,\n      the props \"valueKey\" will be deprecated in 1.1.0`,\n      );\n      realDataKey = valueKey;\n    }\n\n    const notZeroItemCount = pieData.filter(entry => getValueByDataKey(entry, realDataKey, 0) !== 0).length;\n    const totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n    const realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n\n    const sum = pieData.reduce((result: number, entry: any) => {\n      const val = getValueByDataKey(entry, realDataKey, 0);\n      return result + (isNumber(val) ? val : 0);\n    }, 0);\n    let sectors;\n\n    if (sum > 0) {\n      let prev: PieSectorDataItem;\n      sectors = pieData.map((entry: any, i: number) => {\n        const val = getValueByDataKey(entry, realDataKey, 0);\n        const name = getValueByDataKey(entry, nameKey, i);\n        const percent = (isNumber(val) ? val : 0) / sum;\n        let tempStartAngle;\n\n        if (i) {\n          tempStartAngle = prev.endAngle + mathSign(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n        } else {\n          tempStartAngle = startAngle;\n        }\n\n        const tempEndAngle =\n          tempStartAngle + mathSign(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n        const midAngle = (tempStartAngle + tempEndAngle) / 2;\n        const middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n        const tooltipPayload = [\n          {\n            name,\n            value: val,\n            payload: entry,\n            dataKey: realDataKey,\n            type: tooltipType,\n          },\n        ];\n        const tooltipPosition = polarToCartesian(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n\n        prev = {\n          percent,\n          cornerRadius,\n          name,\n          tooltipPayload,\n          midAngle,\n          middleRadius,\n          tooltipPosition,\n          ...entry,\n          ...coordinate,\n          value: getValueByDataKey(entry, realDataKey),\n          startAngle: tempStartAngle,\n          endAngle: tempEndAngle,\n          payload: entry,\n          paddingAngle: mathSign(deltaAngle) * paddingAngle,\n        };\n\n        return prev;\n      });\n    }\n\n    return {\n      ...coordinate,\n      sectors,\n      data: pieData,\n    };\n  };\n\n  constructor(props: Props) {\n    super(props);\n\n    this.state = {\n      isAnimationFinished: !props.isAnimationActive,\n      prevIsAnimationActive: props.isAnimationActive,\n      prevAnimationId: props.animationId,\n      sectorToFocus: 0,\n    };\n  }\n\n  state: State;\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n      return {\n        prevIsAnimationActive: nextProps.isAnimationActive,\n        prevAnimationId: nextProps.animationId,\n        curSectors: nextProps.sectors,\n        prevSectors: [],\n        isAnimationFinished: true,\n      };\n    }\n    if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curSectors: nextProps.sectors,\n        prevSectors: prevState.curSectors,\n        isAnimationFinished: true,\n      };\n    }\n    if (nextProps.sectors !== prevState.curSectors) {\n      return {\n        curSectors: nextProps.sectors,\n        isAnimationFinished: true,\n      };\n    }\n\n    return null;\n  }\n\n  static getTextAnchor(x: number, cx: number) {\n    if (x > cx) {\n      return 'start';\n    }\n    if (x < cx) {\n      return 'end';\n    }\n\n    return 'middle';\n  }\n\n  id = uniqueId('recharts-pie-');\n\n  isActiveIndex(i: number) {\n    const { activeIndex } = this.props;\n\n    if (Array.isArray(activeIndex)) {\n      return activeIndex.indexOf(i) !== -1;\n    }\n\n    return i === activeIndex;\n  }\n\n  hasActiveIndex() {\n    const { activeIndex } = this.props;\n    return Array.isArray(activeIndex) ? activeIndex.length !== 0 : activeIndex || activeIndex === 0;\n  }\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n\n    this.setState({\n      isAnimationFinished: true,\n    });\n\n    if (isFunction(onAnimationEnd)) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n\n    this.setState({\n      isAnimationFinished: false,\n    });\n\n    if (isFunction(onAnimationStart)) {\n      onAnimationStart();\n    }\n  };\n\n  static renderLabelLineItem(option: PieLabelLine, props: any, key: string) {\n    if (React.isValidElement(option)) {\n      return React.cloneElement(option, props);\n    }\n    if (isFunction(option)) {\n      return option(props);\n    }\n\n    const className = clsx('recharts-pie-label-line', typeof option !== 'boolean' ? option.className : '');\n    return <Curve {...props} key={key} type=\"linear\" className={className} />;\n  }\n\n  static renderLabelItem(option: PieLabel, props: any, value: any) {\n    if (React.isValidElement(option)) {\n      return React.cloneElement(option, props);\n    }\n    let label = value;\n    if (isFunction(option)) {\n      label = option(props);\n      if (React.isValidElement(label)) {\n        return label;\n      }\n    }\n\n    const className = clsx(\n      'recharts-pie-label-text',\n      typeof option !== 'boolean' && !isFunction(option) ? option.className : '',\n    );\n    return (\n      <Text {...props} alignmentBaseline=\"middle\" className={className}>\n        {label}\n      </Text>\n    );\n  }\n\n  renderLabels(sectors: PieSectorDataItem[]) {\n    const { isAnimationActive } = this.props;\n\n    if (isAnimationActive && !this.state.isAnimationFinished) {\n      return null;\n    }\n    const { label, labelLine, dataKey, valueKey } = this.props;\n    const pieProps = filterProps(this.props, false);\n    const customLabelProps = filterProps(label, false);\n    const customLabelLineProps = filterProps(labelLine, false);\n    const offsetRadius = (label && (label as any).offsetRadius) || 20;\n\n    const labels = sectors.map((entry, i) => {\n      const midAngle = (entry.startAngle + entry.endAngle) / 2;\n      const endPoint = polarToCartesian(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n      const labelProps = {\n        ...pieProps,\n        ...entry,\n        stroke: 'none',\n        ...customLabelProps,\n        index: i,\n        textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx),\n        ...endPoint,\n      };\n      const lineProps = {\n        ...pieProps,\n        ...entry,\n        fill: 'none',\n        stroke: entry.fill,\n        ...customLabelLineProps,\n        index: i,\n        points: [polarToCartesian(entry.cx, entry.cy, entry.outerRadius, midAngle), endPoint],\n      };\n      let realDataKey = dataKey;\n      // TODO: compatible to lower versions\n      if (isNil(dataKey) && isNil(valueKey)) {\n        realDataKey = 'value';\n      } else if (isNil(dataKey)) {\n        realDataKey = valueKey;\n      }\n\n      return (\n        // eslint-disable-next-line react/no-array-index-key\n        <Layer key={`label-${entry.startAngle}-${entry.endAngle}-${entry.midAngle}-${i}`}>\n          {labelLine && Pie.renderLabelLineItem(labelLine, lineProps, 'line')}\n          {Pie.renderLabelItem(label, labelProps, getValueByDataKey(entry, realDataKey))}\n        </Layer>\n      );\n    });\n\n    return <Layer className=\"recharts-pie-labels\">{labels}</Layer>;\n  }\n\n  renderSectorsStatically(sectors: PieSectorDataItem[]) {\n    const { activeShape, blendStroke, inactiveShape: inactiveShapeProp } = this.props;\n    return sectors.map((entry, i) => {\n      if (entry?.startAngle === 0 && entry?.endAngle === 0 && sectors.length !== 1) return null;\n      const isActive = this.isActiveIndex(i);\n      const inactiveShape = inactiveShapeProp && this.hasActiveIndex() ? inactiveShapeProp : null;\n      const sectorOptions = isActive ? activeShape : inactiveShape;\n      const sectorProps = {\n        ...entry,\n        stroke: blendStroke ? entry.fill : entry.stroke,\n        tabIndex: -1,\n      };\n      return (\n        <Layer\n          ref={(ref: SVGGElement) => {\n            if (ref && !this.sectorRefs.includes(ref)) {\n              this.sectorRefs.push(ref);\n            }\n          }}\n          tabIndex={-1}\n          className=\"recharts-pie-sector\"\n          {...adaptEventsOfChild(this.props, entry, i)}\n          // eslint-disable-next-line react/no-array-index-key\n          key={`sector-${entry?.startAngle}-${entry?.endAngle}-${entry.midAngle}-${i}`}\n        >\n          <Shape option={sectorOptions} isActive={isActive} shapeType=\"sector\" {...sectorProps} />\n        </Layer>\n      );\n    });\n  }\n\n  renderSectorsWithAnimation() {\n    const { sectors, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n\n    const { prevSectors, prevIsAnimationActive } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`pie-${animationId}-${prevIsAnimationActive}`}\n        onAnimationStart={this.handleAnimationStart}\n        onAnimationEnd={this.handleAnimationEnd}\n      >\n        {({ t }: { t: number }) => {\n          const stepData: PieSectorDataItem[] = [];\n          const first = sectors && sectors[0];\n          let curAngle = first.startAngle;\n\n          sectors.forEach((entry, index) => {\n            const prev = prevSectors && prevSectors[index];\n            const paddingAngle = index > 0 ? get(entry, 'paddingAngle', 0) : 0;\n\n            if (prev) {\n              const angleIp = interpolateNumber(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n              const latest = {\n                ...entry,\n                startAngle: curAngle + paddingAngle,\n                endAngle: curAngle + angleIp(t) + paddingAngle,\n              };\n\n              stepData.push(latest);\n              curAngle = latest.endAngle;\n            } else {\n              const { endAngle, startAngle } = entry;\n              const interpolatorAngle = interpolateNumber(0, endAngle - startAngle);\n              const deltaAngle = interpolatorAngle(t);\n              const latest = {\n                ...entry,\n                startAngle: curAngle + paddingAngle,\n                endAngle: curAngle + deltaAngle + paddingAngle,\n              };\n\n              stepData.push(latest);\n              curAngle = latest.endAngle;\n            }\n          });\n\n          return <Layer>{this.renderSectorsStatically(stepData)}</Layer>;\n        }}\n      </Animate>\n    );\n  }\n\n  attachKeyboardHandlers(pieRef: SVGGElement) {\n    // eslint-disable-next-line no-param-reassign\n    pieRef.onkeydown = (e: KeyboardEvent) => {\n      if (!e.altKey) {\n        switch (e.key) {\n          case 'ArrowLeft': {\n            const next = ++this.state.sectorToFocus % this.sectorRefs.length;\n            this.sectorRefs[next].focus();\n            this.setState({ sectorToFocus: next });\n            break;\n          }\n          case 'ArrowRight': {\n            const next =\n              --this.state.sectorToFocus < 0\n                ? this.sectorRefs.length - 1\n                : this.state.sectorToFocus % this.sectorRefs.length;\n            this.sectorRefs[next].focus();\n            this.setState({ sectorToFocus: next });\n            break;\n          }\n          case 'Escape': {\n            this.sectorRefs[this.state.sectorToFocus].blur();\n            this.setState({ sectorToFocus: 0 });\n            break;\n          }\n          default: {\n            // There is nothing to do here\n          }\n        }\n      }\n    };\n  }\n\n  renderSectors() {\n    const { sectors, isAnimationActive } = this.props;\n    const { prevSectors } = this.state;\n\n    if (isAnimationActive && sectors && sectors.length && (!prevSectors || !isEqual(prevSectors, sectors))) {\n      return this.renderSectorsWithAnimation();\n    }\n    return this.renderSectorsStatically(sectors);\n  }\n\n  componentDidMount(): void {\n    if (this.pieRef) {\n      this.attachKeyboardHandlers(this.pieRef);\n    }\n  }\n\n  render() {\n    const { hide, sectors, className, label, cx, cy, innerRadius, outerRadius, isAnimationActive } = this.props;\n    const { isAnimationFinished } = this.state;\n\n    if (\n      hide ||\n      !sectors ||\n      !sectors.length ||\n      !isNumber(cx as number) ||\n      !isNumber(cy as number) ||\n      !isNumber(innerRadius as number) ||\n      !isNumber(outerRadius as number)\n    ) {\n      return null;\n    }\n\n    const layerClass = clsx('recharts-pie', className);\n\n    return (\n      <Layer\n        tabIndex={this.props.rootTabIndex}\n        className={layerClass}\n        ref={ref => {\n          this.pieRef = ref;\n        }}\n      >\n        {this.renderSectors()}\n        {label && this.renderLabels(sectors)}\n        {Label.renderCallByParent(this.props, null, false)}\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, sectors, false)}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Radar\n */\nimport React, { PureComponent, ReactElement, MouseEvent, SVGProps } from 'react';\nimport Animate from 'react-smooth';\nimport isNil from 'lodash/isNil';\nimport last from 'lodash/last';\nimport first from 'lodash/first';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { interpolateNumber } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { Polygon } from '../shape/Polygon';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { LegendType, TooltipType, AnimationTiming, DataKey, AnimationDuration } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { Props as PolarAngleAxisProps } from './PolarAngleAxis';\nimport { Props as PolarRadiusAxisProps } from './PolarRadiusAxis';\n\ninterface RadarPoint {\n  x: number;\n  y: number;\n  cx?: number;\n  cy?: number;\n  angle?: number;\n  radius?: number;\n  value?: number;\n  payload?: any;\n  name?: string;\n}\n\ntype RadarDot = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | DotProps | boolean;\n\ninterface RadarProps {\n  className?: string;\n  dataKey: DataKey<any>;\n  angleAxisId?: string | number;\n  radiusAxisId?: string | number;\n  points?: RadarPoint[];\n  baseLinePoints?: RadarPoint[];\n  isRange?: boolean;\n  shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n  activeDot?: RadarDot;\n  dot?: RadarDot;\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  hide?: boolean;\n  connectNulls?: boolean;\n\n  label?: any;\n  onAnimationStart?: () => void;\n  onAnimationEnd?: () => void;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  isAnimationActive?: boolean;\n  animationId?: number;\n  animationEasing?: AnimationTiming;\n\n  onMouseEnter?: (props: any, e: MouseEvent<SVGPolygonElement>) => void;\n  onMouseLeave?: (props: any, e: MouseEvent<SVGPolygonElement>) => void;\n}\n\ntype RadiusAxis = PolarRadiusAxisProps & { scale: (value: any) => number };\ntype AngleAxis = PolarAngleAxisProps & { scale: (value: any) => number };\n\nexport type Props = Omit<SVGProps<SVGElement>, 'onMouseEnter' | 'onMouseLeave' | 'points'> & RadarProps;\n\ninterface State {\n  isAnimationFinished?: boolean;\n  prevPoints?: RadarPoint[];\n  curPoints?: RadarPoint[];\n  prevAnimationId?: number;\n}\n\nexport class Radar extends PureComponent<Props, State> {\n  static displayName = 'Radar';\n\n  static defaultProps = {\n    angleAxisId: 0,\n    radiusAxisId: 0,\n    hide: false,\n    activeDot: true,\n    dot: false,\n    legendType: 'rect',\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 0,\n    animationDuration: 1500,\n    animationEasing: 'ease',\n  };\n\n  static getComposedData = ({\n    radiusAxis,\n    angleAxis,\n    displayedData,\n    dataKey,\n    bandSize,\n  }: {\n    radiusAxis: RadiusAxis;\n    angleAxis: AngleAxis;\n    displayedData: any[];\n    dataKey: RadarProps['dataKey'];\n    bandSize: number;\n  }) => {\n    const { cx, cy } = angleAxis;\n    let isRange = false;\n    const points: RadarPoint[] = [];\n    const angleBandSize = angleAxis.type !== 'number' ? bandSize ?? 0 : 0;\n\n    displayedData.forEach((entry, i) => {\n      const name = getValueByDataKey(entry, angleAxis.dataKey, i);\n      const value = getValueByDataKey(entry, dataKey);\n      const angle = angleAxis.scale(name) + angleBandSize;\n      const pointValue = Array.isArray(value) ? last(value) : value;\n      const radius = isNil(pointValue) ? undefined : radiusAxis.scale(pointValue);\n\n      if (Array.isArray(value) && value.length >= 2) {\n        isRange = true;\n      }\n\n      points.push({\n        ...polarToCartesian(cx, cy, radius, angle),\n        name,\n        value,\n        cx,\n        cy,\n        radius,\n        angle,\n        payload: entry,\n      });\n    });\n    const baseLinePoints: RadarPoint[] = [];\n\n    if (isRange) {\n      points.forEach(point => {\n        if (Array.isArray(point.value)) {\n          const baseValue = first(point.value);\n          const radius = isNil(baseValue) ? undefined : radiusAxis.scale(baseValue);\n\n          baseLinePoints.push({\n            ...point,\n            radius,\n            ...polarToCartesian(cx, cy, radius, point.angle),\n          });\n        } else {\n          baseLinePoints.push(point);\n        }\n      });\n    }\n\n    return { points, isRange, baseLinePoints };\n  };\n\n  state: State = { isAnimationFinished: false };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curPoints: nextProps.points,\n        prevPoints: prevState.curPoints,\n      };\n    }\n    if (nextProps.points !== prevState.curPoints) {\n      return {\n        curPoints: nextProps.points,\n      };\n    }\n\n    return null;\n  }\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n    this.setState({ isAnimationFinished: true });\n\n    if (isFunction(onAnimationEnd)) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n\n    this.setState({ isAnimationFinished: false });\n\n    if (isFunction(onAnimationStart)) {\n      onAnimationStart();\n    }\n  };\n\n  handleMouseEnter = (e: MouseEvent<SVGPolygonElement>) => {\n    const { onMouseEnter } = this.props;\n\n    if (onMouseEnter) {\n      onMouseEnter(this.props, e);\n    }\n  };\n\n  handleMouseLeave = (e: MouseEvent<SVGPolygonElement>) => {\n    const { onMouseLeave } = this.props;\n\n    if (onMouseLeave) {\n      onMouseLeave(this.props, e);\n    }\n  };\n\n  static renderDotItem(option: RadarDot, props: any) {\n    let dotItem;\n\n    if (React.isValidElement(option)) {\n      dotItem = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      dotItem = option(props);\n    } else {\n      const { key, ...dotProps } = props;\n      dotItem = (\n        <Dot\n          {...dotProps}\n          key={key}\n          className={clsx('recharts-radar-dot', typeof option !== 'boolean' ? option.className : '')}\n        />\n      );\n    }\n\n    return dotItem;\n  }\n\n  renderDots(points: RadarPoint[]) {\n    const { dot, dataKey } = this.props;\n    const baseProps = filterProps(this.props, false);\n    const customDotProps = filterProps(dot, true);\n\n    const dots = points.map((entry, i) => {\n      const dotProps = {\n        key: `dot-${i}`,\n        r: 3,\n        ...baseProps,\n        ...customDotProps,\n        dataKey,\n        cx: entry.x,\n        cy: entry.y,\n        index: i,\n        payload: entry,\n      };\n\n      return Radar.renderDotItem(dot, dotProps);\n    });\n\n    return <Layer className=\"recharts-radar-dots\">{dots}</Layer>;\n  }\n\n  renderPolygonStatically(points: RadarPoint[]) {\n    const { shape, dot, isRange, baseLinePoints, connectNulls } = this.props;\n\n    let radar;\n    if (React.isValidElement(shape)) {\n      radar = React.cloneElement(shape, { ...this.props, points } as any);\n    } else if (isFunction(shape)) {\n      radar = shape({ ...this.props, points });\n    } else {\n      radar = (\n        <Polygon\n          {...filterProps(this.props, true)}\n          onMouseEnter={this.handleMouseEnter}\n          onMouseLeave={this.handleMouseLeave}\n          points={points}\n          baseLinePoints={isRange ? baseLinePoints : null}\n          connectNulls={connectNulls}\n        />\n      );\n    }\n\n    return (\n      <Layer className=\"recharts-radar-polygon\">\n        {radar}\n        {dot ? this.renderDots(points) : null}\n      </Layer>\n    );\n  }\n\n  renderPolygonWithAnimation() {\n    const { points, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n    const { prevPoints } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`radar-${animationId}`}\n        onAnimationEnd={this.handleAnimationEnd}\n        onAnimationStart={this.handleAnimationStart}\n      >\n        {({ t }: { t: number }) => {\n          const prevPointsDiffFactor = prevPoints && prevPoints.length / points.length;\n          const stepData = points.map((entry, index) => {\n            const prev = prevPoints && prevPoints[Math.floor(index * prevPointsDiffFactor)];\n\n            if (prev) {\n              const interpolatorX = interpolateNumber(prev.x, entry.x);\n              const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n              return {\n                ...entry,\n                x: interpolatorX(t),\n                y: interpolatorY(t),\n              };\n            }\n\n            const interpolatorX = interpolateNumber(entry.cx, entry.x);\n            const interpolatorY = interpolateNumber(entry.cy, entry.y);\n\n            return {\n              ...entry,\n              x: interpolatorX(t),\n              y: interpolatorY(t),\n            };\n          });\n\n          return this.renderPolygonStatically(stepData);\n        }}\n      </Animate>\n    );\n  }\n\n  renderPolygon() {\n    const { points, isAnimationActive, isRange } = this.props;\n    const { prevPoints } = this.state;\n\n    if (isAnimationActive && points && points.length && !isRange && (!prevPoints || !isEqual(prevPoints, points))) {\n      return this.renderPolygonWithAnimation();\n    }\n\n    return this.renderPolygonStatically(points);\n  }\n\n  render() {\n    const { hide, className, points, isAnimationActive } = this.props;\n\n    if (hide || !points || !points.length) {\n      return null;\n    }\n\n    const { isAnimationFinished } = this.state;\n    const layerClass = clsx('recharts-radar', className);\n\n    return (\n      <Layer className={layerClass}>\n        {this.renderPolygon()}\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n      </Layer>\n    );\n  }\n}\n","import React, { SVGProps } from 'react';\nimport { RadialBarProps } from '../polar/RadialBar';\nimport { Props as SectorProps } from '../shape/Sector';\nimport { Shape } from './ActiveShapeUtils';\n\nexport function parseCornerRadius(cornerRadius: string | number): number {\n  if (typeof cornerRadius === 'string') {\n    return parseInt(cornerRadius, 10);\n  }\n\n  return cornerRadius;\n}\n\n// Sector props is expecting cx, cy as numbers.\n// When props are being spread in from a user defined component in RadialBar,\n// the prop types of an SVGElement have these typed as string | number.\n// This function will return the passed in props along with cx, cy as numbers.\nexport function typeGuardSectorProps(option: SVGProps<SVGPathElement>, props: SectorProps): SectorProps {\n  const cxValue = `${props.cx || option.cx}`;\n  const cx = Number(cxValue);\n  const cyValue = `${props.cy || option.cy}`;\n  const cy = Number(cyValue);\n  return {\n    ...props,\n    ...option,\n    cx,\n    cy,\n  };\n}\n\nexport interface RadialBarSectorProps extends SectorProps {\n  index?: number;\n  option: RadialBarProps['activeShape'];\n  isActive: boolean;\n}\n\nexport function RadialBarSector(props: RadialBarSectorProps) {\n  return <Shape shapeType=\"sector\" propTransformer={typeGuardSectorProps} {...props} />;\n}\n","/**\n * @fileOverview Render a group of radial bar\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\n\nimport { parseCornerRadius, RadialBarSector, RadialBarSectorProps } from '../util/RadialBarUtils';\nimport { Props as SectorProps } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { ImplicitLabelListType, LabelList } from '../component/LabelList';\nimport { Cell } from '../component/Cell';\nimport { mathSign, interpolateNumber } from '../util/DataUtils';\nimport {\n  getCateCoordinateOfBar,\n  findPositionOfBar,\n  getValueByDataKey,\n  truncateByDomain,\n  getBaseValueOfBar,\n  getTooltipItem,\n} from '../util/ChartUtils';\nimport {\n  LegendType,\n  TooltipType,\n  AnimationTiming,\n  TickItem,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n  AnimationDuration,\n  ActiveShape,\n} from '../util/types';\nimport { polarToCartesian } from '../util/PolarUtils';\n// TODO: Cause of circular dependency. Needs refactoring of functions that need them.\n// import { AngleAxisProps, RadiusAxisProps } from './types';\n\ntype RadialBarDataItem = SectorProps & {\n  value?: any;\n  payload?: any;\n  background?: SectorProps;\n};\n\ntype RadialBarBackground = ActiveShape<SectorProps>;\n\ninterface InternalRadialBarProps {\n  animationId?: string | number;\n  className?: string;\n  angleAxisId?: string | number;\n  radiusAxisId?: string | number;\n  startAngle?: number;\n  endAngle?: number;\n  shape?: ActiveShape<SectorProps, SVGPathElement>;\n  activeShape?: ActiveShape<SectorProps, SVGPathElement>;\n  activeIndex?: number;\n  dataKey: string | number | ((obj: any) => any);\n  cornerRadius?: string | number;\n  forceCornerRadius?: boolean;\n  cornerIsExternal?: boolean;\n  minPointSize?: number;\n  maxBarSize?: number;\n  data?: RadialBarDataItem[];\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  hide?: boolean;\n  label?: ImplicitLabelListType<any>;\n  stackId?: string | number;\n  background?: RadialBarBackground;\n  onAnimationStart?: () => void;\n  onAnimationEnd?: () => void;\n  isAnimationActive?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n}\n\nexport type RadialBarProps = PresentationAttributesAdaptChildEvent<any, SVGElement> & InternalRadialBarProps;\n\ninterface State {\n  readonly isAnimationFinished?: boolean;\n  readonly prevData?: RadialBarDataItem[];\n  readonly curData?: RadialBarDataItem[];\n  readonly prevAnimationId?: string | number;\n}\n\nexport class RadialBar extends PureComponent<RadialBarProps, State> {\n  static displayName = 'RadialBar';\n\n  static defaultProps = {\n    angleAxisId: 0,\n    radiusAxisId: 0,\n    minPointSize: 0,\n    hide: false,\n    legendType: 'rect',\n    data: [] as RadialBarDataItem[],\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 0,\n    animationDuration: 1500,\n    animationEasing: 'ease',\n    forceCornerRadius: false,\n    cornerIsExternal: false,\n  };\n\n  static getComposedData = ({\n    item,\n    props,\n    radiusAxis,\n    radiusAxisTicks,\n    angleAxis,\n    angleAxisTicks,\n    displayedData,\n    dataKey,\n    stackedData,\n    barPosition,\n    bandSize,\n    dataStartIndex,\n  }: {\n    item: ReactElement;\n    props: any;\n    radiusAxis: any; // RadiusAxisProps;\n    radiusAxisTicks: Array<TickItem>;\n    angleAxis: any; // AngleAxisProps;\n    angleAxisTicks: Array<TickItem>;\n    displayedData: any[];\n    dataKey: RadialBarProps['dataKey'];\n    stackedData?: any[];\n    barPosition?: any[];\n    bandSize?: number;\n    dataStartIndex: number;\n  }) => {\n    const pos = findPositionOfBar(barPosition, item);\n    if (!pos) {\n      return null;\n    }\n\n    const { cx, cy } = angleAxis;\n    const { layout } = props;\n    const { children, minPointSize } = item.props;\n    const numericAxis = layout === 'radial' ? angleAxis : radiusAxis;\n    const stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n    const baseValue = getBaseValueOfBar({ numericAxis });\n    const cells = findAllByType(children, Cell);\n    const sectors = displayedData.map((entry: any, index: number) => {\n      let value, innerRadius, outerRadius, startAngle, endAngle, backgroundSector;\n\n      if (stackedData) {\n        value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n      } else {\n        value = getValueByDataKey(entry, dataKey);\n        if (!Array.isArray(value)) {\n          value = [baseValue, value];\n        }\n      }\n\n      if (layout === 'radial') {\n        innerRadius = getCateCoordinateOfBar({\n          axis: radiusAxis,\n          ticks: radiusAxisTicks,\n          bandSize,\n          offset: pos.offset,\n          entry,\n          index,\n        });\n        endAngle = angleAxis.scale(value[1]);\n        startAngle = angleAxis.scale(value[0]);\n        outerRadius = innerRadius + pos.size;\n        const deltaAngle = endAngle - startAngle;\n\n        if (Math.abs(minPointSize) > 0 && Math.abs(deltaAngle) < Math.abs(minPointSize)) {\n          const delta = mathSign(deltaAngle || minPointSize) * (Math.abs(minPointSize) - Math.abs(deltaAngle));\n\n          endAngle += delta;\n        }\n        backgroundSector = {\n          background: {\n            cx,\n            cy,\n            innerRadius,\n            outerRadius,\n            startAngle: props.startAngle,\n            endAngle: props.endAngle,\n          },\n        };\n      } else {\n        innerRadius = radiusAxis.scale(value[0]);\n        outerRadius = radiusAxis.scale(value[1]);\n        startAngle = getCateCoordinateOfBar({\n          axis: angleAxis,\n          ticks: angleAxisTicks,\n          bandSize,\n          offset: pos.offset,\n          entry,\n          index,\n        });\n        endAngle = startAngle + pos.size;\n        const deltaRadius = outerRadius - innerRadius;\n\n        if (Math.abs(minPointSize) > 0 && Math.abs(deltaRadius) < Math.abs(minPointSize)) {\n          const delta = mathSign(deltaRadius || minPointSize) * (Math.abs(minPointSize) - Math.abs(deltaRadius));\n          outerRadius += delta;\n        }\n      }\n\n      return {\n        ...entry,\n        ...backgroundSector,\n        payload: entry,\n        value: stackedData ? value : value[1],\n        cx,\n        cy,\n        innerRadius,\n        outerRadius,\n        startAngle,\n        endAngle,\n        ...(cells && cells[index] && cells[index].props),\n        tooltipPayload: [getTooltipItem(item, entry)],\n        tooltipPosition: polarToCartesian(cx, cy, (innerRadius + outerRadius) / 2, (startAngle + endAngle) / 2),\n      };\n    });\n\n    return { data: sectors, layout };\n  };\n\n  state: State = {\n    isAnimationFinished: false,\n  };\n\n  static getDerivedStateFromProps(nextProps: RadialBarProps, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curData: nextProps.data,\n        prevData: prevState.curData,\n      };\n    }\n    if (nextProps.data !== prevState.curData) {\n      return {\n        curData: nextProps.data,\n      };\n    }\n\n    return null;\n  }\n\n  getDeltaAngle() {\n    const { startAngle, endAngle } = this.props;\n    const sign = mathSign(endAngle - startAngle);\n    const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n\n    return sign * deltaAngle;\n  }\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n    this.setState({ isAnimationFinished: true });\n\n    if (isFunction(onAnimationEnd)) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n\n    this.setState({ isAnimationFinished: false });\n\n    if (isFunction(onAnimationStart)) {\n      onAnimationStart();\n    }\n  };\n\n  renderSectorsStatically(sectors: SectorProps[]) {\n    const { shape, activeShape, activeIndex, cornerRadius, ...others } = this.props;\n    const baseProps = filterProps(others, false);\n\n    return sectors.map((entry, i) => {\n      const isActive = i === activeIndex;\n      const props: RadialBarSectorProps = {\n        ...baseProps,\n        cornerRadius: parseCornerRadius(cornerRadius),\n        ...entry,\n        ...adaptEventsOfChild(this.props, entry, i),\n        className: `recharts-radial-bar-sector ${entry.className}`,\n        forceCornerRadius: others.forceCornerRadius,\n        cornerIsExternal: others.cornerIsExternal,\n        isActive,\n        option: isActive ? activeShape : shape,\n      };\n\n      return <RadialBarSector {...props} key={`sector-${i}`} />;\n    });\n  }\n\n  renderSectorsWithAnimation() {\n    const { data, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n    const { prevData } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`radialBar-${animationId}`}\n        onAnimationStart={this.handleAnimationStart}\n        onAnimationEnd={this.handleAnimationEnd}\n      >\n        {({ t }: { t: number }) => {\n          const stepData = data.map((entry, index) => {\n            const prev = prevData && prevData[index];\n\n            if (prev) {\n              const interpolatorStartAngle = interpolateNumber(prev.startAngle, entry.startAngle);\n              const interpolatorEndAngle = interpolateNumber(prev.endAngle, entry.endAngle);\n\n              return {\n                ...entry,\n                startAngle: interpolatorStartAngle(t),\n                endAngle: interpolatorEndAngle(t),\n              };\n            }\n            const { endAngle, startAngle } = entry;\n            const interpolator = interpolateNumber(startAngle, endAngle);\n\n            return { ...entry, endAngle: interpolator(t) };\n          });\n\n          return <Layer>{this.renderSectorsStatically(stepData)}</Layer>;\n        }}\n      </Animate>\n    );\n  }\n\n  renderSectors() {\n    const { data, isAnimationActive } = this.props;\n    const { prevData } = this.state;\n\n    if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n      return this.renderSectorsWithAnimation();\n    }\n\n    return this.renderSectorsStatically(data);\n  }\n\n  renderBackground(sectors?: RadialBarDataItem[]) {\n    const { cornerRadius } = this.props;\n    const backgroundProps = filterProps(this.props.background, false);\n\n    return sectors.map((entry, i) => {\n      const { value, background, ...rest } = entry;\n\n      if (!background) {\n        return null;\n      }\n\n      const props: RadialBarSectorProps = {\n        cornerRadius: parseCornerRadius(cornerRadius),\n        ...rest,\n        fill: '#eee',\n        ...background,\n        ...backgroundProps,\n        ...adaptEventsOfChild(this.props, entry, i),\n        index: i,\n        className: clsx('recharts-radial-bar-background-sector', backgroundProps?.className),\n        option: background,\n        isActive: false,\n      };\n\n      return <RadialBarSector {...props} key={`sector-${i}`} />;\n    });\n  }\n\n  render() {\n    const { hide, data, className, background, isAnimationActive } = this.props;\n\n    if (hide || !data || !data.length) {\n      return null;\n    }\n\n    const { isAnimationFinished } = this.state;\n    const layerClass = clsx('recharts-area', className);\n\n    return (\n      <Layer className={layerClass}>\n        {background && <Layer className=\"recharts-radial-bar-background\">{this.renderBackground(data)}</Layer>}\n\n        <Layer className=\"recharts-radial-bar-sectors\">{this.renderSectors()}</Layer>\n\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent({ ...this.props }, data)}\n      </Layer>\n    );\n  }\n}\n","const PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\n\nexport const generatePrefixStyle = (name: string, value: string) => {\n  if (!name) {\n    return null;\n  }\n\n  const camelName = name.replace(/(\\w)/, v => v.toUpperCase());\n  const result: Record<string, string> = PREFIX_LIST.reduce(\n    (res, entry) => ({\n      ...res,\n      [entry + camelName]: value,\n    }),\n    {},\n  );\n\n  result[name] = value;\n\n  return result;\n};\n","/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children, ReactElement, TouchEvent, SVGProps } from 'react';\nimport clsx from 'clsx';\nimport { scalePoint, ScalePoint } from 'victory-vendor/d3-scale';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\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 { Padding, DataKey } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\ntype BrushTravellerType = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\ninterface BrushStartEndIndex {\n  startIndex?: number;\n  endIndex?: number;\n}\n\ninterface InternalBrushProps {\n  x?: number;\n  y?: number;\n  width?: number;\n  data?: any[];\n  updateId?: string | number;\n}\n\ninterface BrushProps extends InternalBrushProps {\n  className?: string;\n\n  ariaLabel?: string;\n\n  height: number;\n  travellerWidth?: number;\n  traveller?: BrushTravellerType;\n  gap?: number;\n  padding?: Padding;\n\n  dataKey?: DataKey<any>;\n  startIndex?: number;\n  endIndex?: number;\n  tickFormatter?: (value: any, index: number) => string | number;\n\n  children?: ReactElement;\n\n  onChange?: (newIndex: BrushStartEndIndex) => void;\n  onDragEnd?: (newIndex: BrushStartEndIndex) => void;\n  leaveTimeOut?: number;\n  alwaysShowText?: boolean;\n}\n\nexport type Props = Omit<SVGProps<SVGElement>, 'onChange'> & BrushProps;\n\ntype BrushTravellerId = 'startX' | 'endX';\n\ninterface State {\n  isTravellerMoving?: boolean;\n  isTravellerFocused?: boolean;\n  isSlideMoving?: boolean;\n  startX?: number;\n  endX?: number;\n  slideMoveStartX?: number;\n  movingTravellerId?: BrushTravellerId;\n  isTextActive?: boolean;\n  brushMoveStartX?: number;\n\n  scale?: ScalePoint<number>;\n  scaleValues?: number[];\n\n  prevData?: any[];\n  prevWidth?: number;\n  prevX?: number;\n  prevTravellerWidth?: number;\n  prevUpdateId?: string | number;\n}\n\nconst createScale = ({\n  data,\n  startIndex,\n  endIndex,\n  x,\n  width,\n  travellerWidth,\n}: {\n  data?: any[];\n  startIndex?: number;\n  endIndex?: number;\n  x?: number;\n  width?: number;\n  travellerWidth?: number;\n}) => {\n  if (!data || !data.length) {\n    return {};\n  }\n\n  const len = data.length;\n  const scale = scalePoint<number>()\n    .domain(range(0, len))\n    .range([x, x + width - travellerWidth]);\n  const scaleValues = scale.domain().map(entry => scale(entry));\n\n  return {\n    isTextActive: false,\n    isSlideMoving: false,\n    isTravellerMoving: false,\n    isTravellerFocused: false,\n    startX: scale(startIndex),\n    endX: scale(endIndex),\n    scale,\n    scaleValues,\n  };\n};\n\nconst isTouch = (e: TouchEvent<SVGElement> | React.MouseEvent<SVGElement>): e is TouchEvent<SVGElement> =>\n  (e as TouchEvent<SVGElement>).changedTouches && !!(e as TouchEvent<SVGElement>).changedTouches.length;\n\nexport class Brush extends PureComponent<Props, State> {\n  static displayName = 'Brush';\n\n  static defaultProps = {\n    height: 40,\n    travellerWidth: 5,\n    gap: 1,\n    fill: '#fff',\n    stroke: '#666',\n    padding: { top: 1, right: 1, bottom: 1, left: 1 },\n    leaveTimeOut: 1000,\n    alwaysShowText: false,\n  };\n\n  constructor(props: Props) {\n    super(props);\n\n    this.travellerDragStartHandlers = {\n      startX: this.handleTravellerDragStart.bind(this, 'startX'),\n      endX: this.handleTravellerDragStart.bind(this, 'endX'),\n    };\n\n    this.state = {};\n  }\n\n  leaveTimer?: number;\n\n  travellerDragStartHandlers?: Record<\n    BrushTravellerId,\n    (event: React.MouseEvent<SVGGElement> | TouchEvent<SVGGElement>) => void\n  >;\n\n  static renderDefaultTraveller(props: any) {\n    const { x, y, width, height, stroke } = props;\n    const lineY = Math.floor(y + height / 2) - 1;\n\n    return (\n      <>\n        <rect x={x} y={y} width={width} height={height} fill={stroke} stroke=\"none\" />\n        <line x1={x + 1} y1={lineY} x2={x + width - 1} y2={lineY} fill=\"none\" stroke=\"#fff\" />\n        <line x1={x + 1} y1={lineY + 2} x2={x + width - 1} y2={lineY + 2} fill=\"none\" stroke=\"#fff\" />\n      </>\n    );\n  }\n\n  static renderTraveller(option: BrushTravellerType, props: any) {\n    let rectangle;\n\n    if (React.isValidElement(option)) {\n      rectangle = 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  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    const { data, width, x, travellerWidth, updateId, startIndex, endIndex } = nextProps;\n\n    if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n      return {\n        prevData: data,\n        prevTravellerWidth: travellerWidth,\n        prevUpdateId: updateId,\n        prevX: x,\n        prevWidth: width,\n        ...(data && data.length\n          ? createScale({ data, width, x, travellerWidth, startIndex, endIndex })\n          : { scale: null, scaleValues: null }),\n      };\n    }\n    if (\n      prevState.scale &&\n      (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)\n    ) {\n      prevState.scale.range([x, x + width - travellerWidth]);\n\n      const scaleValues = prevState.scale.domain().map(entry => 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,\n      };\n    }\n\n    return null;\n  }\n\n  componentWillUnmount() {\n    if (this.leaveTimer) {\n      clearTimeout(this.leaveTimer);\n      this.leaveTimer = null;\n    }\n\n    this.detachDragEndListener();\n  }\n\n  static getIndexInRange(valueRange: number[], x: number) {\n    const len = valueRange.length;\n    let start = 0;\n    let end = len - 1;\n\n    while (end - start > 1) {\n      const middle = Math.floor((start + end) / 2);\n\n      if (valueRange[middle] > x) {\n        end = middle;\n      } else {\n        start = middle;\n      }\n    }\n\n    return x >= valueRange[end] ? end : start;\n  }\n\n  getIndex({ startX, endX }: { startX: number; endX: number }) {\n    const { scaleValues } = this.state;\n    const { gap, data } = this.props;\n    const lastIndex = data.length - 1;\n    const min = Math.min(startX, endX);\n    const max = Math.max(startX, endX);\n    const minIndex = Brush.getIndexInRange(scaleValues, min);\n    const maxIndex = Brush.getIndexInRange(scaleValues, max);\n    return {\n      startIndex: minIndex - (minIndex % gap),\n      endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - (maxIndex % gap),\n    };\n  }\n\n  getTextOfTick(index: number) {\n    const { data, tickFormatter, dataKey } = this.props;\n    const text = getValueByDataKey(data[index], dataKey, index);\n\n    return isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n  }\n\n  handleDrag = (e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) => {\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  handleTouchMove = (e: TouchEvent<SVGGElement>) => {\n    if (e.changedTouches != null && e.changedTouches.length > 0) {\n      this.handleDrag(e.changedTouches[0]);\n    }\n  };\n\n  attachDragEndListener() {\n    window.addEventListener('mouseup', this.handleDragEnd, true);\n    window.addEventListener('touchend', this.handleDragEnd, true);\n    window.addEventListener('mousemove', this.handleDrag, true);\n  }\n\n  detachDragEndListener() {\n    window.removeEventListener('mouseup', this.handleDragEnd, true);\n    window.removeEventListener('touchend', this.handleDragEnd, true);\n    window.removeEventListener('mousemove', this.handleDrag, true);\n  }\n\n  handleDragEnd = () => {\n    this.setState(\n      {\n        isTravellerMoving: false,\n        isSlideMoving: false,\n      },\n      () => {\n        const { endIndex, onDragEnd, startIndex } = this.props;\n        onDragEnd?.({\n          endIndex,\n          startIndex,\n        });\n      },\n    );\n    this.detachDragEndListener();\n  };\n\n  handleLeaveWrapper = () => {\n    if (this.state.isTravellerMoving || this.state.isSlideMoving) {\n      this.leaveTimer = window.setTimeout(this.handleDragEnd, this.props.leaveTimeOut);\n    }\n  };\n\n  handleEnterSlideOrTraveller = () => {\n    this.setState({\n      isTextActive: true,\n    });\n  };\n\n  handleLeaveSlideOrTraveller = () => {\n    this.setState({\n      isTextActive: false,\n    });\n  };\n\n  handleSlideDragStart = (e: TouchEvent<SVGRectElement> | React.MouseEvent<SVGRectElement>) => {\n    const 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  handleSlideDrag(e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) {\n    const { slideMoveStartX, startX, endX } = this.state;\n    const { x, width, travellerWidth, startIndex, endIndex, onChange } = this.props;\n    let 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    const 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  handleTravellerDragStart(id: BrushTravellerId, e: React.MouseEvent<SVGGElement> | TouchEvent<SVGGElement>) {\n    const event = isTouch(e) ? e.changedTouches[0] : e;\n\n    this.setState({\n      isSlideMoving: false,\n      isTravellerMoving: true,\n      movingTravellerId: id,\n      brushMoveStartX: event.pageX,\n    });\n\n    this.attachDragEndListener();\n  }\n\n  handleTravellerMove(e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) {\n    const { brushMoveStartX, movingTravellerId, endX, startX } = this.state;\n    const prevValue = this.state[movingTravellerId];\n\n    const { x, width, travellerWidth, onChange, gap, data } = this.props;\n    const params = { startX: this.state.startX, endX: this.state.endX };\n\n    let delta = e.pageX - brushMoveStartX;\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\n    const newIndex = this.getIndex(params);\n    const { startIndex, endIndex } = newIndex;\n    const isFullGap = () => {\n      const lastIndex = data.length - 1;\n      if (\n        (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0)) ||\n        (endX < startX && endIndex === lastIndex) ||\n        (movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0)) ||\n        (endX > startX && endIndex === lastIndex)\n      ) {\n        return true;\n      }\n      return false;\n    };\n\n    this.setState(\n      {\n        [movingTravellerId]: prevValue + delta,\n        brushMoveStartX: e.pageX,\n      },\n      () => {\n        if (onChange) {\n          if (isFullGap()) {\n            onChange(newIndex);\n          }\n        }\n      },\n    );\n  }\n\n  handleTravellerMoveKeyboard(direction: 1 | -1, id: BrushTravellerId) {\n    // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n    const { scaleValues, startX, endX } = this.state;\n    // currentScaleValue refers to which coordinate the current traveller should be placed at.\n    const currentScaleValue = this.state[id];\n\n    const currentIndex = scaleValues.indexOf(currentScaleValue);\n    if (currentIndex === -1) {\n      return;\n    }\n\n    const newIndex = currentIndex + direction;\n    if (newIndex === -1 || newIndex >= scaleValues.length) {\n      return;\n    }\n\n    const newScaleValue = scaleValues[newIndex];\n\n    // Prevent travellers from being on top of each other or overlapping\n    if ((id === 'startX' && newScaleValue >= endX) || (id === 'endX' && newScaleValue <= startX)) {\n      return;\n    }\n\n    this.setState(\n      {\n        [id]: newScaleValue,\n      },\n      () => {\n        this.props.onChange(\n          this.getIndex({\n            startX: this.state.startX,\n            endX: this.state.endX,\n          }),\n        );\n      },\n    );\n  }\n\n  renderBackground() {\n    const { x, y, width, height, fill, stroke } = this.props;\n\n    return <rect stroke={stroke} fill={fill} x={x} y={y} width={width} height={height} />;\n  }\n\n  renderPanorama() {\n    const { x, y, width, height, data, children, padding } = this.props;\n    const chartElement = Children.only(children);\n\n    if (!chartElement) {\n      return null;\n    }\n\n    return React.cloneElement(chartElement, {\n      x,\n      y,\n      width,\n      height,\n      margin: padding,\n      compact: true,\n      data,\n    });\n  }\n\n  renderTravellerLayer(travellerX: number, id: BrushTravellerId) {\n    const { y, travellerWidth, height, traveller, ariaLabel, data, startIndex, endIndex } = this.props;\n    const x = Math.max(travellerX, this.props.x);\n    const travellerProps = {\n      ...filterProps(this.props, false),\n      x,\n      y,\n      width: travellerWidth,\n      height,\n    };\n\n    const ariaLabelBrush = ariaLabel || `Min value: ${data[startIndex]?.name}, Max value: ${data[endIndex]?.name}`;\n\n    return (\n      <Layer\n        tabIndex={0}\n        role=\"slider\"\n        aria-label={ariaLabelBrush}\n        aria-valuenow={travellerX}\n        className=\"recharts-brush-traveller\"\n        onMouseEnter={this.handleEnterSlideOrTraveller}\n        onMouseLeave={this.handleLeaveSlideOrTraveller}\n        onMouseDown={this.travellerDragStartHandlers[id]}\n        onTouchStart={this.travellerDragStartHandlers[id]}\n        onKeyDown={e => {\n          if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n            return;\n          }\n          e.preventDefault();\n          e.stopPropagation();\n          this.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n        }}\n        onFocus={() => {\n          this.setState({ isTravellerFocused: true });\n        }}\n        onBlur={() => {\n          this.setState({ isTravellerFocused: false });\n        }}\n        style={{ cursor: 'col-resize' }}\n      >\n        {Brush.renderTraveller(traveller, travellerProps)}\n      </Layer>\n    );\n  }\n\n  renderSlide(startX: number, endX: number) {\n    const { y, height, stroke, travellerWidth } = this.props;\n    const x = Math.min(startX, endX) + travellerWidth;\n    const width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n\n    return (\n      <rect\n        className=\"recharts-brush-slide\"\n        onMouseEnter={this.handleEnterSlideOrTraveller}\n        onMouseLeave={this.handleLeaveSlideOrTraveller}\n        onMouseDown={this.handleSlideDragStart}\n        onTouchStart={this.handleSlideDragStart}\n        style={{ cursor: 'move' }}\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\n  renderText() {\n    const { startIndex, endIndex, y, height, travellerWidth, stroke } = this.props;\n    const { startX, endX } = this.state;\n    const offset = 5;\n    const attrs = {\n      pointerEvents: 'none',\n      fill: stroke,\n    };\n\n    return (\n      <Layer className=\"recharts-brush-texts\">\n        <Text\n          textAnchor=\"end\"\n          verticalAnchor=\"middle\"\n          x={Math.min(startX, endX) - offset}\n          y={y + height / 2}\n          {...attrs}\n        >\n          {this.getTextOfTick(startIndex)}\n        </Text>\n        <Text\n          textAnchor=\"start\"\n          verticalAnchor=\"middle\"\n          x={Math.max(startX, endX) + travellerWidth + offset}\n          y={y + height / 2}\n          {...attrs}\n        >\n          {this.getTextOfTick(endIndex)}\n        </Text>\n      </Layer>\n    );\n  }\n\n  render() {\n    const { data, className, children, x, y, width, height, alwaysShowText } = this.props;\n    const { startX, endX, isTextActive, isSlideMoving, isTravellerMoving, isTravellerFocused } = this.state;\n\n    if (\n      !data ||\n      !data.length ||\n      !isNumber(x) ||\n      !isNumber(y) ||\n      !isNumber(width) ||\n      !isNumber(height) ||\n      width <= 0 ||\n      height <= 0\n    ) {\n      return null;\n    }\n\n    const layerClass = clsx('recharts-brush', className);\n    const isPanoramic = React.Children.count(children) === 1;\n    const style = generatePrefixStyle('userSelect', 'none');\n\n    return (\n      <Layer\n        className={layerClass}\n        onMouseLeave={this.handleLeaveWrapper}\n        onTouchMove={this.handleTouchMove}\n        style={style}\n      >\n        {this.renderBackground()}\n        {isPanoramic && this.renderPanorama()}\n        {this.renderSlide(startX, endX)}\n        {this.renderTravellerLayer(startX, 'startX')}\n        {this.renderTravellerLayer(endX, 'endX')}\n        {(isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) &&\n          this.renderText()}\n      </Layer>\n    );\n  }\n}\n","export type IfOverflow = 'hidden' | 'visible' | 'discard' | 'extendDomain';\n\nexport const ifOverflowMatches = (props: { alwaysShow?: boolean; ifOverflow?: IfOverflow }, value: IfOverflow) => {\n  const { alwaysShow } = props;\n  let { ifOverflow } = props;\n\n  if (alwaysShow) {\n    ifOverflow = 'extendDomain';\n  }\n\n  return ifOverflow === value;\n};\n","import React, { SVGProps } from 'react';\nimport invariant from 'tiny-invariant';\nimport { ActiveShape } from './types';\nimport { Props as RectangleProps } from '../shape/Rectangle';\nimport { BarProps } from '../cartesian/Bar';\nimport { Shape } from './ActiveShapeUtils';\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(\n  { x: xProp, y: yProp, ...option }: SVGProps<SVGPathElement>,\n  props: BarProps,\n): RectangleProps {\n  const xValue = `${xProp}`;\n  const x = parseInt(xValue, 10);\n  const yValue = `${yProp}`;\n  const y = parseInt(yValue, 10);\n  const heightValue = `${props.height || option.height}`;\n  const height = parseInt(heightValue, 10);\n  const widthValue = `${props.width || option.width}`;\n  const width = parseInt(widthValue, 10);\n  return {\n    ...props,\n    ...option,\n    ...(x ? { x } : {}),\n    ...(y ? { y } : {}),\n    height,\n    width,\n    name: props.name as string,\n    radius: props.radius,\n  };\n}\n\ntype BarRectangleProps = {\n  option: ActiveShape<BarProps, SVGPathElement>;\n  isActive: boolean;\n} & BarProps;\n\nexport function BarRectangle(props: BarRectangleProps) {\n  return (\n    <Shape\n      shapeType=\"rectangle\"\n      propTransformer={typeguardBarRectangleProps}\n      activeClassName=\"recharts-active-bar\"\n      {...props}\n    />\n  );\n}\n\nexport type MinPointSize = number | ((value: number, index: number) => number);\n\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */\nexport const minPointSizeCallback =\n  (minPointSize: MinPointSize, defaultValue = 0) =>\n  (value: unknown, index: number): number => {\n    if (typeof minPointSize === 'number') return minPointSize;\n    const isValueNumber = typeof value === 'number';\n    if (isValueNumber) {\n      return minPointSize(value, index);\n    }\n\n    invariant(\n      isValueNumber,\n      `minPointSize callback function received a value with type of ${typeof value}. Currently only numbers are supported.`,\n    );\n    return defaultValue;\n  };\n","/**\n * @fileOverview Render a group of bar\n */\nimport React, { Key, PureComponent, ReactElement } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport { Props as RectangleProps } from '../shape/Rectangle';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar, Props as ErrorBarProps, ErrorBarDataPointFormatter } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { filterProps, findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport {\n  getCateCoordinateOfBar,\n  getValueByDataKey,\n  truncateByDomain,\n  getBaseValueOfBar,\n  findPositionOfBar,\n  getTooltipItem,\n} from '../util/ChartUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport {\n  D3Scale,\n  TooltipType,\n  LegendType,\n  AnimationTiming,\n  ChartOffset,\n  DataKey,\n  TickItem,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n  AnimationDuration,\n  ActiveShape,\n} from '../util/types';\nimport { ImplicitLabelType } from '../component/Label';\nimport { BarRectangle, MinPointSize, minPointSizeCallback } from '../util/BarUtils';\n\nexport interface BarRectangleItem extends RectangleProps {\n  value?: number | [number, number];\n  /** the coordinate of background rectangle */\n  background?: {\n    x?: number;\n    y?: number;\n    width?: number;\n    height?: number;\n  };\n}\n\ninterface InternalBarProps {\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number>; x?: number; width?: number };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number>; y?: number; height?: number };\n  data?: BarRectangleItem[];\n  top?: number;\n  left?: number;\n  width?: number;\n  height?: number;\n}\n\nexport interface BarProps extends InternalBarProps {\n  className?: string;\n  index?: Key;\n  activeIndex?: number;\n  layout?: 'horizontal' | 'vertical';\n  xAxisId?: string | number;\n  yAxisId?: string | number;\n  stackId?: string | number;\n  barSize?: string | number;\n  unit?: string | number;\n  name?: string | number;\n  dataKey: DataKey<any>;\n  tooltipType?: TooltipType;\n  legendType?: LegendType;\n  minPointSize?: MinPointSize;\n  maxBarSize?: number;\n  hide?: boolean;\n  shape?: ActiveShape<BarProps, SVGPathElement>;\n  activeBar?: ActiveShape<BarProps, SVGPathElement>;\n  background?: ActiveShape<BarProps, SVGPathElement>;\n  radius?: number | [number, number, number, number];\n  onAnimationStart?: () => void;\n  onAnimationEnd?: () => void;\n  isAnimationActive?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n  animationId?: number;\n  id?: string;\n  label?: ImplicitLabelType;\n}\n\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGPathElement>, 'radius' | 'name'> & BarProps;\n\ninterface State {\n  readonly isAnimationFinished?: boolean;\n  readonly prevData?: BarRectangleItem[];\n  readonly curData?: BarRectangleItem[];\n  readonly prevAnimationId?: number;\n}\n\nexport class Bar extends PureComponent<Props, State> {\n  static displayName = 'Bar';\n\n  static defaultProps = {\n    xAxisId: 0,\n    yAxisId: 0,\n    legendType: 'rect',\n    minPointSize: 0,\n    hide: false,\n    data: [] as BarRectangleItem[],\n    layout: 'vertical',\n    activeBar: false,\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 0,\n    animationDuration: 400,\n    animationEasing: 'ease',\n  };\n\n  /**\n   * Compose the data of each group\n   * @param {Object} props Props for the component\n   * @param {Object} item        An instance of Bar\n   * @param {Array} barPosition  The offset and size of each bar\n   * @param {Object} xAxis       The configuration of x-axis\n   * @param {Object} yAxis       The configuration of y-axis\n   * @param {Array} stackedData  The stacked data of a bar item\n   * @return{Array} Composed data\n   */\n  static getComposedData = ({\n    props,\n    item,\n    barPosition,\n    bandSize,\n    xAxis,\n    yAxis,\n    xAxisTicks,\n    yAxisTicks,\n    stackedData,\n    dataStartIndex,\n    displayedData,\n    offset,\n  }: {\n    props: Props;\n    item: ReactElement;\n    barPosition: any;\n    bandSize: number;\n    xAxis: InternalBarProps['xAxis'];\n    yAxis: InternalBarProps['yAxis'];\n    xAxisTicks: TickItem[];\n    yAxisTicks: TickItem[];\n    stackedData: Array<[number, number]>;\n    dataStartIndex: number;\n    offset: ChartOffset;\n    displayedData: any[];\n  }) => {\n    const pos = findPositionOfBar(barPosition, item);\n    if (!pos) {\n      return null;\n    }\n\n    const { layout } = props;\n    const itemDefaultProps = (item.type as any).defaultProps;\n    const itemProps = itemDefaultProps !== undefined ? { ...itemDefaultProps, ...item.props } : item.props;\n    const { dataKey, children, minPointSize: minPointSizeProp } = itemProps;\n    const numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n    const stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n    const baseValue = getBaseValueOfBar({ numericAxis });\n    const cells = findAllByType(children, Cell);\n    const rects = displayedData.map((entry, index) => {\n      let value, x, y, width, height, background;\n\n      if (stackedData) {\n        value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n      } else {\n        value = getValueByDataKey(entry, dataKey);\n\n        if (!Array.isArray(value)) {\n          value = [baseValue, value];\n        }\n      }\n\n      const minPointSize = minPointSizeCallback(minPointSizeProp, this.defaultProps.minPointSize)(value[1], index);\n\n      if (layout === 'horizontal') {\n        const [baseValueScale, currentValueScale] = [yAxis.scale(value[0]), yAxis.scale(value[1])];\n        x = getCateCoordinateOfBar({\n          axis: xAxis,\n          ticks: xAxisTicks,\n          bandSize,\n          offset: pos.offset,\n          entry,\n          index,\n        });\n        y = currentValueScale ?? baseValueScale ?? undefined;\n        width = pos.size;\n        const computedHeight = baseValueScale - currentValueScale;\n        height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n        background = { x, y: yAxis.y, width, height: yAxis.height };\n\n        if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n          const delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n\n          y -= delta;\n          height += delta;\n        }\n      } else {\n        const [baseValueScale, currentValueScale] = [xAxis.scale(value[0]), xAxis.scale(value[1])];\n        x = baseValueScale;\n        y = getCateCoordinateOfBar({\n          axis: yAxis,\n          ticks: yAxisTicks,\n          bandSize,\n          offset: pos.offset,\n          entry,\n          index,\n        });\n        width = currentValueScale - baseValueScale;\n        height = pos.size;\n        background = { x: xAxis.x, y, width: xAxis.width, height };\n\n        if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n          const delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n          width += delta;\n        }\n      }\n\n      return {\n        ...entry,\n        x,\n        y,\n        width,\n        height,\n        value: stackedData ? value : value[1],\n        payload: entry,\n        background,\n        ...(cells && cells[index] && cells[index].props),\n        tooltipPayload: [getTooltipItem(item, entry)],\n        tooltipPosition: { x: x + width / 2, y: y + height / 2 },\n      };\n    });\n\n    return { data: rects, layout, ...offset };\n  };\n\n  state: State = { isAnimationFinished: false };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curData: nextProps.data,\n        prevData: prevState.curData,\n      };\n    }\n    if (nextProps.data !== prevState.curData) {\n      return {\n        curData: nextProps.data,\n      };\n    }\n\n    return null;\n  }\n\n  id = uniqueId('recharts-bar-');\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n    this.setState({ isAnimationFinished: true });\n\n    if (onAnimationEnd) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n    this.setState({ isAnimationFinished: false });\n\n    if (onAnimationStart) {\n      onAnimationStart();\n    }\n  };\n\n  renderRectanglesStatically(data: BarRectangleItem[]) {\n    const { shape, dataKey, activeIndex, activeBar } = this.props;\n    const baseProps = filterProps(this.props, false);\n\n    return (\n      data &&\n      data.map((entry, i) => {\n        const isActive = i === activeIndex;\n        const option = isActive ? activeBar : shape;\n        const props = {\n          ...baseProps,\n          ...entry,\n          isActive,\n          option,\n          index: i,\n          dataKey,\n          onAnimationStart: this.handleAnimationStart,\n          onAnimationEnd: this.handleAnimationEnd,\n        };\n        return (\n          <Layer\n            className=\"recharts-bar-rectangle\"\n            {...adaptEventsOfChild(this.props, entry, i)}\n            key={`rectangle-${entry?.x}-${entry?.y}-${entry?.value}`}\n          >\n            <BarRectangle {...props} />\n          </Layer>\n        );\n      })\n    );\n  }\n\n  renderRectanglesWithAnimation() {\n    const { data, layout, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } =\n      this.props;\n    const { prevData } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`bar-${animationId}`}\n        onAnimationEnd={this.handleAnimationEnd}\n        onAnimationStart={this.handleAnimationStart}\n      >\n        {({ t }: { t: number }) => {\n          const stepData = data.map((entry, index) => {\n            const prev = prevData && prevData[index];\n\n            if (prev) {\n              const interpolatorX = interpolateNumber(prev.x, entry.x);\n              const interpolatorY = interpolateNumber(prev.y, entry.y);\n              const interpolatorWidth = interpolateNumber(prev.width, entry.width);\n              const interpolatorHeight = interpolateNumber(prev.height, entry.height);\n\n              return {\n                ...entry,\n                x: interpolatorX(t),\n                y: interpolatorY(t),\n                width: interpolatorWidth(t),\n                height: interpolatorHeight(t),\n              };\n            }\n\n            if (layout === 'horizontal') {\n              const interpolatorHeight = interpolateNumber(0, entry.height);\n              const h = interpolatorHeight(t);\n\n              return {\n                ...entry,\n                y: entry.y + entry.height - h,\n                height: h,\n              };\n            }\n\n            const interpolator = interpolateNumber(0, entry.width);\n            const w = interpolator(t);\n\n            return { ...entry, width: w };\n          });\n\n          return <Layer>{this.renderRectanglesStatically(stepData)}</Layer>;\n        }}\n      </Animate>\n    );\n  }\n\n  renderRectangles() {\n    const { data, isAnimationActive } = this.props;\n    const { prevData } = this.state;\n\n    if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n      return this.renderRectanglesWithAnimation();\n    }\n\n    return this.renderRectanglesStatically(data);\n  }\n\n  renderBackground() {\n    const { data, dataKey, activeIndex } = this.props;\n    const backgroundProps = filterProps(this.props.background, false);\n\n    return data.map((entry, i) => {\n      const { value, background, ...rest } = entry;\n\n      if (!background) {\n        return null;\n      }\n\n      const props = {\n        ...rest,\n        fill: '#eee',\n        ...background,\n        ...backgroundProps,\n        ...adaptEventsOfChild(this.props, entry, i),\n        onAnimationStart: this.handleAnimationStart,\n        onAnimationEnd: this.handleAnimationEnd,\n        dataKey,\n        index: i,\n        className: 'recharts-bar-background-rectangle',\n      };\n\n      return (\n        <BarRectangle\n          key={`background-bar-${i}`}\n          option={this.props.background}\n          isActive={i === activeIndex}\n          {...props}\n        />\n      );\n    });\n  }\n\n  renderErrorBar(needClip: boolean, clipPathId: string) {\n    if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n      return null;\n    }\n\n    const { data, xAxis, yAxis, layout, children } = this.props;\n    const errorBarItems = findAllByType(children, ErrorBar);\n\n    if (!errorBarItems) {\n      return null;\n    }\n\n    const offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n\n    const dataPointFormatter: ErrorBarDataPointFormatter = (dataPoint: BarRectangleItem, dataKey) => {\n      /**\n       * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n       * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n       * */\n      const value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n      return {\n        x: dataPoint.x,\n        y: dataPoint.y,\n        value,\n        errorVal: getValueByDataKey(dataPoint, dataKey),\n      };\n    };\n\n    const errorBarProps = {\n      clipPath: needClip ? `url(#clipPath-${clipPathId})` : null,\n    };\n\n    return (\n      <Layer {...errorBarProps}>\n        {errorBarItems.map((item: ReactElement<ErrorBarProps>) =>\n          React.cloneElement(item, {\n            key: `error-bar-${clipPathId}-${item.props.dataKey}`,\n            data,\n            xAxis,\n            yAxis,\n            layout,\n            offset,\n            dataPointFormatter,\n          }),\n        )}\n      </Layer>\n    );\n  }\n\n  render() {\n    const { hide, data, className, xAxis, yAxis, left, top, width, height, isAnimationActive, background, id } =\n      this.props;\n    if (hide || !data || !data.length) {\n      return null;\n    }\n\n    const { isAnimationFinished } = this.state;\n    const layerClass = clsx('recharts-bar', className);\n    const needClipX = xAxis && xAxis.allowDataOverflow;\n    const needClipY = yAxis && yAxis.allowDataOverflow;\n    const needClip = needClipX || needClipY;\n    const clipPathId = isNil(id) ? this.id : id;\n\n    return (\n      <Layer className={layerClass}>\n        {needClipX || needClipY ? (\n          <defs>\n            <clipPath id={`clipPath-${clipPathId}`}>\n              <rect\n                x={needClipX ? left : left - width / 2}\n                y={needClipY ? top : top - height / 2}\n                width={needClipX ? width : width * 2}\n                height={needClipY ? height : height * 2}\n              />\n            </clipPath>\n          </defs>\n        ) : null}\n        <Layer className=\"recharts-bar-rectangles\" clipPath={needClip ? `url(#clipPath-${clipPathId})` : null}>\n          {background ? this.renderBackground() : null}\n          {this.renderRectangles()}\n        </Layer>\n        {this.renderErrorBar(needClip, clipPathId)}\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data)}\n      </Layer>\n    );\n  }\n}\n","import mapValues from 'lodash/mapValues';\nimport every from 'lodash/every';\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { Coordinate, AxisType, Size } from './types';\nimport { getPercentValue } from './DataUtils';\nimport { Bar } from '../cartesian/Bar';\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 const formatAxisMap = (props: any, axisMap: any, offset: any, axisType: AxisType, chartName: string) => {\n  const { width, height, layout, children } = props;\n  const ids = Object.keys(axisMap);\n  const steps: Record<string, any> = {\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  const hasBar = !!findChildByType(children, Bar);\n\n  return ids.reduce((result, id) => {\n    const axis = axisMap[id];\n    const { orientation, domain, padding = {}, mirror, reversed } = axis;\n    const offsetKey = `${orientation}${mirror ? 'Mirror' : ''}`;\n\n    let calculatedPadding, range, x, y, needSpace;\n\n    if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n      const diff = domain[1] - domain[0];\n      let smallestDistanceBetweenValues = Infinity;\n      const sortedValues = axis.categoricalDomain.sort();\n      sortedValues.forEach((value: number, index: number) => {\n        if (index > 0) {\n          smallestDistanceBetweenValues = Math.min(\n            (value || 0) - (sortedValues[index - 1] || 0),\n            smallestDistanceBetweenValues,\n          );\n        }\n      });\n      if (Number.isFinite(smallestDistanceBetweenValues)) {\n        const smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n        const rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n\n        if (axis.padding === 'gap') {\n          calculatedPadding = (smallestDistanceInPercent * rangeWidth) / 2;\n        }\n\n        if (axis.padding === 'no-gap') {\n          const gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n          const halfBand = (smallestDistanceInPercent * rangeWidth) / 2;\n          calculatedPadding = halfBand - gap - ((halfBand - gap) / rangeWidth) * gap;\n        }\n      }\n    }\n\n    if (axisType === 'xAxis') {\n      range = [\n        offset.left + (padding.left || 0) + (calculatedPadding || 0),\n        offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0),\n      ];\n    } else if (axisType === 'yAxis') {\n      range =\n        layout === 'horizontal'\n          ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)]\n          : [\n              offset.top + (padding.top || 0) + (calculatedPadding || 0),\n              offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0),\n            ];\n    } else {\n      ({ range } = axis);\n    }\n\n    if (reversed) {\n      range = [range[1], range[0]];\n    }\n\n    const { scale, realScaleType } = parseScale(axis, chartName, hasBar);\n    scale.domain(domain).range(range);\n    checkDomainOfScale(scale);\n    const ticks = getTicksOfScale(scale, { ...axis, realScaleType });\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    const finalAxis = {\n      ...axis,\n      ...ticks,\n      realScaleType,\n      x,\n      y,\n      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 as any);\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 { ...result, [id]: finalAxis };\n  }, {});\n};\n\nexport const rectWithPoints = ({ x: x1, y: y1 }: Coordinate, { x: x2, y: y2 }: Coordinate) => ({\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 */\nexport const rectWithCoords = ({ x1, y1, x2, y2 }: { x1: number; y1: number; x2: number; y2: number }) =>\n  rectWithPoints({ x: x1, y: y1 }, { x: x2, y: y2 });\n\nexport class ScaleHelper {\n  static EPS = 1e-4;\n\n  private scale: any;\n\n  static create(obj: any) {\n    return new ScaleHelper(obj);\n  }\n\n  constructor(scale: any) {\n    this.scale = scale;\n  }\n\n  get domain() {\n    return this.scale.domain;\n  }\n\n  get range() {\n    return this.scale.range;\n  }\n\n  get rangeMin() {\n    return this.range()[0];\n  }\n\n  get rangeMax() {\n    return this.range()[1];\n  }\n\n  get bandwidth() {\n    return this.scale.bandwidth;\n  }\n\n  apply(value: any, { bandAware, position }: { bandAware?: boolean; position?: any } = {}) {\n    if (value === undefined) {\n      return undefined;\n    }\n    if (position) {\n      switch (position) {\n        case 'start': {\n          return this.scale(value);\n        }\n        case 'middle': {\n          const offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n          return this.scale(value) + offset;\n        }\n        case 'end': {\n          const offset = this.bandwidth ? this.bandwidth() : 0;\n          return this.scale(value) + offset;\n        }\n        default: {\n          return this.scale(value);\n        }\n      }\n    }\n    if (bandAware) {\n      const offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n      return this.scale(value) + offset;\n    }\n    return this.scale(value);\n  }\n\n  isInRange(value: number) {\n    const range = this.range();\n\n    const first = range[0];\n    const last = range[range.length - 1];\n\n    return first <= last ? value >= first && value <= last : value >= last && value <= first;\n  }\n}\n\ntype ScaleResult<T> = {\n  [P in keyof T]: number;\n};\ntype Scales<T> = {\n  [P in keyof T]: ScaleHelper;\n};\ntype ScalesApply<T> = (coord: { [P in keyof T]: any }, options: any) => ScaleResult<T>;\ntype ScalesIsInRange<T> = (coord: { [P in keyof T]: any }) => boolean;\ntype LabeledScales<T> = Scales<T> & { apply: ScalesApply<T> } & { isInRange: ScalesIsInRange<T> };\n\nexport const createLabeledScales = (options: Record<string, any>): LabeledScales<Record<string, any>> => {\n  const scales: Scales<Record<string, any>> = Object.keys(options).reduce(\n    (res, key: string) => ({\n      ...res,\n      [key]: ScaleHelper.create(options[key]),\n    }),\n    {},\n  );\n\n  return {\n    ...scales,\n    apply(coord: any, { bandAware, position }: any = {}) {\n      return mapValues(coord, (value, label) => scales[label].apply(value, { bandAware, position }));\n    },\n\n    isInRange(coord: any) {\n      return every(coord, (value, label) => scales[label].isInRange(value));\n    },\n  } as LabeledScales<Record<string, any>>;\n};\n\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */\nexport function normalizeAngle(angle: number) {\n  return ((angle % 180) + 180) % 180;\n}\n\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */\nexport const getAngledRectangleWidth = ({ width, height }: Size, angle: number | undefined = 0) => {\n  // Ensure angle is >= 0 && < 180\n  const normalizedAngle = normalizeAngle(angle);\n  const angleRadians = (normalizedAngle * Math.PI) / 180;\n\n  /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n   * width. This threshold defines when each formula should kick in. */\n  const angleThreshold = Math.atan(height / width);\n\n  const angledWidth =\n    angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold\n      ? height / Math.sin(angleRadians)\n      : width / Math.cos(angleRadians);\n\n  return Math.abs(angledWidth);\n};\n","import memoize from 'lodash/memoize';\nimport { CartesianViewBox, ChartOffset } from './types';\n\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */\nexport const calculateViewBox: (offset: ChartOffset) => CartesianViewBox = memoize(\n  (offset: ChartOffset): CartesianViewBox => {\n    return {\n      x: offset.left,\n      y: offset.top,\n      width: offset.width,\n      height: offset.height,\n    };\n  },\n  offset => ['l', offset.left, 't', offset.top, 'w', offset.width, 'h', offset.height].join(''),\n);\n","import React, { ReactNode, createContext, useContext } from 'react';\nimport invariant from 'tiny-invariant';\nimport find from 'lodash/find';\nimport every from 'lodash/every';\nimport { CartesianViewBox, ChartOffset, XAxisMap, YAxisMap } from '../util/types';\nimport type { CategoricalChartState } from '../chart/types';\nimport type { Props as XAxisProps } from '../cartesian/XAxis';\nimport type { Props as YAxisProps } from '../cartesian/YAxis';\nimport { calculateViewBox } from '../util/calculateViewBox';\nimport { getAnyElementOfObject } from '../util/DataUtils';\n\nexport const XAxisContext = createContext<XAxisMap | undefined>(undefined);\nexport const YAxisContext = createContext<YAxisMap | undefined>(undefined);\nexport const ViewBoxContext = createContext<CartesianViewBox | undefined>(undefined);\nexport const OffsetContext = createContext<ChartOffset>({});\nexport const ClipPathIdContext = createContext<string | undefined>(undefined);\nexport const ChartHeightContext = createContext<number>(0);\nexport const ChartWidthContext = createContext<number>(0);\n\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */\nexport const ChartLayoutContextProvider = (props: {\n  state: CategoricalChartState;\n  children: ReactNode;\n  clipPathId: string;\n  width: number;\n  height: number;\n}) => {\n  const {\n    state: { xAxisMap, yAxisMap, offset },\n    clipPathId,\n    children,\n    width,\n    height,\n  } = props;\n\n  /**\n   * Perhaps we should compute this property when reading? Let's see what is more often used\n   */\n  const viewBox = calculateViewBox(offset);\n\n  /*\n   * This pretends to be a single context but actually is split into multiple smaller ones.\n   * Why?\n   * Because one React Context only allows to set one value.\n   * But we need to set multiple values.\n   * If we do that with one context, then we force re-render on components that might not even be interested\n   * in the part of the state that has changed.\n   *\n   * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n   *\n   * To actually achieve the optimal re-render, it is necessary to use React.memo().\n   * See the test file for details.\n   */\n  return (\n    <XAxisContext.Provider value={xAxisMap}>\n      <YAxisContext.Provider value={yAxisMap}>\n        <OffsetContext.Provider value={offset}>\n          <ViewBoxContext.Provider value={viewBox}>\n            <ClipPathIdContext.Provider value={clipPathId}>\n              <ChartHeightContext.Provider value={height}>\n                <ChartWidthContext.Provider value={width}>{children}</ChartWidthContext.Provider>\n              </ChartHeightContext.Provider>\n            </ClipPathIdContext.Provider>\n          </ViewBoxContext.Provider>\n        </OffsetContext.Provider>\n      </YAxisContext.Provider>\n    </XAxisContext.Provider>\n  );\n};\n\nexport const useClipPathId = (): string | undefined => {\n  return useContext(ClipPathIdContext);\n};\n\nfunction getKeysForDebug(object: Record<string, unknown>) {\n  const keys = Object.keys(object);\n  if (keys.length === 0) {\n    return 'There are no available ids.';\n  }\n  return `Available ids are: ${keys}.`;\n}\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <XAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport const useXAxisOrThrow = (xAxisId: string | number): XAxisProps => {\n  const xAxisMap = useContext(XAxisContext);\n\n  invariant(\n    xAxisMap != null,\n    'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?',\n  );\n\n  const xAxis: XAxisProps | undefined = xAxisMap[xAxisId];\n\n  invariant(xAxis != null, `Could not find xAxis by id \"${xAxisId}\" [${typeof xAxisId}]. ${getKeysForDebug(xAxisMap)}`);\n\n  return xAxis;\n};\n\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */\nexport const useArbitraryXAxis = (): XAxisProps | undefined => {\n  const xAxisMap = useContext(XAxisContext);\n  return getAnyElementOfObject(xAxisMap);\n};\n\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */\nexport const useArbitraryYAxis = (): XAxisProps | undefined => {\n  const yAxisMap = useContext(YAxisContext);\n  return getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */\nexport const useYAxisWithFiniteDomainOrRandom = (): YAxisProps | undefined => {\n  const yAxisMap = useContext(YAxisContext);\n  const yAxisWithFiniteDomain = find(yAxisMap, axis => every(axis.domain, Number.isFinite));\n  return yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <YAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport const useYAxisOrThrow = (yAxisId: string | number): YAxisProps => {\n  const yAxisMap = useContext(YAxisContext);\n\n  invariant(\n    yAxisMap != null,\n    'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?',\n  );\n\n  const yAxis: YAxisProps | undefined = yAxisMap[yAxisId];\n\n  invariant(yAxis != null, `Could not find yAxis by id \"${yAxisId}\" [${typeof yAxisId}]. ${getKeysForDebug(yAxisMap)}`);\n\n  return yAxis;\n};\n\nexport const useViewBox = (): CartesianViewBox => {\n  const viewBox = useContext(ViewBoxContext);\n  return viewBox;\n};\n\nexport const useOffset = (): ChartOffset => {\n  return useContext(OffsetContext);\n};\n\nexport const useChartWidth = (): number => {\n  return useContext(ChartWidthContext);\n};\n\nexport const useChartHeight = (): number => {\n  return useContext(ChartHeightContext);\n};\n","/**\n * @fileOverview Reference Line\n */\nimport React, { ReactElement, SVGProps } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelType, Label } from '../component/Label';\nimport { IfOverflow, ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { CartesianViewBox, D3Scale } from '../util/types';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { filterProps } from '../util/ReactUtils';\nimport { useClipPathId, useViewBox, useXAxisOrThrow, useYAxisOrThrow } from '../context/chartLayoutContext';\n\ninterface InternalReferenceLineProps {\n  viewBox?: CartesianViewBox;\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  clipPathId?: number | string;\n}\n\nexport type Segment = {\n  x?: number | string;\n  y?: number | string;\n};\n\nexport type ReferenceLinePosition = 'middle' | 'start' | 'end';\n\ninterface ReferenceLineProps extends InternalReferenceLineProps {\n  isFront?: boolean;\n  /** @deprecated use ifOverflow=\"extendDomain\"  */\n  alwaysShow?: boolean;\n  ifOverflow?: IfOverflow;\n\n  x?: number | string;\n  y?: number | string;\n\n  segment?: ReadonlyArray<Segment>;\n\n  position?: ReferenceLinePosition;\n\n  className?: number | string;\n  yAxisId?: number | string;\n  xAxisId?: number | string;\n  shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n  label?: ImplicitLabelType;\n}\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n *    - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */\nexport type Props = Omit<SVGProps<SVGLineElement>, 'viewBox'> & ReferenceLineProps;\n\nconst renderLine = (option: ReferenceLineProps['shape'], props: any) => {\n  let line;\n\n  if (React.isValidElement(option)) {\n    line = React.cloneElement(option, props);\n  } else if (isFunction(option)) {\n    line = option(props);\n  } else {\n    line = <line {...props} className=\"recharts-reference-line-line\" />;\n  }\n\n  return line;\n};\n\ntype EndPointsPropsSubset = {\n  alwaysShow?: boolean;\n  ifOverflow?: IfOverflow;\n  segment?: ReadonlyArray<Segment>;\n  x?: number | string;\n  y?: number | string;\n};\n// TODO: ScaleHelper\nexport const getEndPoints = (\n  scales: any,\n  isFixedX: boolean,\n  isFixedY: boolean,\n  isSegment: boolean,\n  viewBox: CartesianViewBox,\n  position: Props['position'],\n  xAxisOrientation: XAxisProps['orientation'],\n  yAxisOrientation: YAxisProps['orientation'],\n  props: EndPointsPropsSubset,\n) => {\n  const { x, y, width, height } = viewBox;\n\n  if (isFixedY) {\n    const { y: yCoord } = props;\n    const coord = scales.y.apply(yCoord, { position });\n\n    if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n      return null;\n    }\n\n    const points = [\n      { x: x + width, y: coord },\n      { x, y: coord },\n    ];\n    return yAxisOrientation === 'left' ? points.reverse() : points;\n  }\n  if (isFixedX) {\n    const { x: xCoord } = props;\n    const coord = scales.x.apply(xCoord, { position });\n\n    if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(coord)) {\n      return null;\n    }\n\n    const points = [\n      { x: coord, y: y + height },\n      { x: coord, y },\n    ];\n    return xAxisOrientation === 'top' ? points.reverse() : points;\n  }\n  if (isSegment) {\n    const { segment } = props;\n\n    const points = segment.map(p => scales.apply(p, { position }));\n\n    if (ifOverflowMatches(props, 'discard') && some(points, p => !scales.isInRange(p))) {\n      return null;\n    }\n\n    return points;\n  }\n\n  return null;\n};\n\nfunction ReferenceLineImpl(props: Props) {\n  const { x: fixedX, y: fixedY, segment, xAxisId, yAxisId, shape, className, alwaysShow } = props;\n\n  const clipPathId = useClipPathId();\n  const xAxis = useXAxisOrThrow(xAxisId);\n  const yAxis = useYAxisOrThrow(yAxisId);\n  const viewBox = useViewBox();\n  if (!clipPathId || !viewBox) {\n    return null;\n  }\n\n  warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n  const scales = createLabeledScales({ x: xAxis.scale, y: yAxis.scale });\n\n  const isX = isNumOrStr(fixedX);\n  const isY = isNumOrStr(fixedY);\n  const isSegment = segment && segment.length === 2;\n\n  const endPoints = getEndPoints(\n    scales,\n    isX,\n    isY,\n    isSegment,\n    viewBox,\n    props.position,\n    xAxis.orientation,\n    yAxis.orientation,\n    props,\n  );\n  if (!endPoints) {\n    return null;\n  }\n\n  const [{ x: x1, y: y1 }, { x: x2, y: y2 }] = endPoints;\n\n  const clipPath = ifOverflowMatches(props, 'hidden') ? `url(#${clipPathId})` : undefined;\n\n  const lineProps = {\n    clipPath,\n    ...filterProps(props, true),\n    x1,\n    y1,\n    x2,\n    y2,\n  };\n\n  return (\n    <Layer className={clsx('recharts-reference-line', className)}>\n      {renderLine(shape, lineProps)}\n      {Label.renderCallByParent(props, rectWithCoords({ x1, y1, x2, y2 }))}\n    </Layer>\n  );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ReferenceLine extends React.Component<Props> {\n  static displayName = 'ReferenceLine';\n\n  static 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  };\n\n  render() {\n    return <ReferenceLineImpl {...this.props} />;\n  }\n}\n","/**\n * @fileOverview Reference Dot\n */\nimport React, { ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { ImplicitLabelType, Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { IfOverflow, ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { D3Scale } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\n\ninterface InternalReferenceDotProps {\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  clipPathId?: number | string;\n}\n\ninterface ReferenceDotProps extends InternalReferenceDotProps {\n  r?: number;\n\n  isFront?: boolean;\n  /** @deprecated use ifOverflow=\"extendDomain\"  */\n  alwaysShow?: boolean;\n  ifOverflow?: IfOverflow;\n  x?: number | string;\n  y?: number | string;\n\n  className?: number | string;\n  yAxisId?: number | string;\n  xAxisId?: number | string;\n  shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n  label?: ImplicitLabelType;\n}\n\nexport type Props = DotProps & ReferenceDotProps;\n\nconst getCoordinate = (props: Props) => {\n  const { x, y, xAxis, yAxis } = props;\n  const scales = createLabeledScales({ x: xAxis.scale, y: yAxis.scale });\n\n  const result = scales.apply({ x, y }, { bandAware: true });\n\n  if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n    return null;\n  }\n\n  return result;\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ReferenceDot extends React.Component<Props> {\n  static displayName = 'ReferenceDot';\n\n  static 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\n  static renderDot = (option: Props['shape'], props: any) => {\n    let dot;\n\n    if (React.isValidElement(option)) {\n      dot = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      dot = option(props);\n    } else {\n      dot = <Dot {...props} cx={props.cx} cy={props.cy} className=\"recharts-reference-dot-dot\" />;\n    }\n\n    return dot;\n  };\n\n  render() {\n    const { x, y, r, alwaysShow, clipPathId } = this.props;\n    const isX = isNumOrStr(x);\n    const isY = isNumOrStr(y);\n\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    const coordinate = getCoordinate(this.props);\n\n    if (!coordinate) {\n      return null;\n    }\n\n    const { x: cx, y: cy } = coordinate;\n\n    const { shape, className } = this.props;\n\n    const clipPath = ifOverflowMatches(this.props, 'hidden') ? `url(#${clipPathId})` : undefined;\n\n    const dotProps = {\n      clipPath,\n      ...filterProps(this.props, true),\n      cx,\n      cy,\n    };\n\n    return (\n      <Layer className={clsx('recharts-reference-dot', className)}>\n        {ReferenceDot.renderDot(shape, dotProps)}\n        {Label.renderCallByParent(this.props, {\n          x: cx - r,\n          y: cy - r,\n          width: 2 * r,\n          height: 2 * r,\n        })}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Reference Line\n */\nimport React, { ReactElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelType, Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { IfOverflow, ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle, Props as RectangleProps } from '../shape/Rectangle';\nimport { CartesianViewBox, D3Scale } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\n\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\n\ninterface InternalReferenceAreaProps {\n  viewBox?: CartesianViewBox;\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  clipPathId?: number | string;\n}\n\ninterface ReferenceAreaProps extends InternalReferenceAreaProps {\n  isFront?: boolean;\n  /** @deprecated use ifOverflow=\"extendDomain\"  */\n  alwaysShow?: boolean;\n  ifOverflow?: IfOverflow;\n  x1?: number | string;\n  x2?: number | string;\n  y1?: number | string;\n  y2?: number | string;\n\n  className?: number | string;\n  yAxisId?: number | string;\n  xAxisId?: number | string;\n  shape?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);\n  label?: ImplicitLabelType;\n}\n\nexport type Props = RectangleProps & ReferenceAreaProps;\n\nconst getRect = (hasX1: boolean, hasX2: boolean, hasY1: boolean, hasY2: boolean, props: Props) => {\n  const { x1: xValue1, x2: xValue2, y1: yValue1, y2: yValue2, xAxis, yAxis } = props;\n\n  if (!xAxis || !yAxis) return null;\n\n  const scales = createLabeledScales({ x: xAxis.scale, y: yAxis.scale });\n\n  const p1 = {\n    x: hasX1 ? scales.x.apply(xValue1, { position: 'start' }) : scales.x.rangeMin,\n    y: hasY1 ? scales.y.apply(yValue1, { position: 'start' }) : scales.y.rangeMin,\n  };\n\n  const p2 = {\n    x: hasX2 ? scales.x.apply(xValue2, { position: 'end' }) : scales.x.rangeMax,\n    y: hasY2 ? scales.y.apply(yValue2, { position: 'end' }) : 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\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ReferenceArea extends React.Component<Props> {\n  static displayName = 'ReferenceArea';\n\n  static 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\n  static renderRect = (option: ReferenceAreaProps['shape'], props: any) => {\n    let rect;\n\n    if (React.isValidElement(option)) {\n      rect = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      rect = option(props);\n    } else {\n      rect = <Rectangle {...props} className=\"recharts-reference-area-rect\" />;\n    }\n\n    return rect;\n  };\n\n  render() {\n    const { x1, x2, y1, y2, className, alwaysShow, clipPathId } = this.props;\n\n    warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n    const hasX1 = isNumOrStr(x1);\n    const hasX2 = isNumOrStr(x2);\n    const hasY1 = isNumOrStr(y1);\n    const hasY2 = isNumOrStr(y2);\n\n    const { shape } = this.props;\n\n    if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n      return null;\n    }\n\n    const rect = getRect(hasX1, hasX2, hasY1, hasY2, this.props);\n\n    if (!rect && !shape) {\n      return null;\n    }\n\n    const clipPath = ifOverflowMatches(this.props, 'hidden') ? `url(#${clipPathId})` : undefined;\n\n    return (\n      <Layer className={clsx('recharts-reference-area', className)}>\n        {ReferenceArea.renderRect(shape, { clipPath, ...filterProps(this.props, true), ...rect })}\n        {Label.renderCallByParent(this.props, rect)}\n      </Layer>\n    );\n  }\n}\n","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition<Type>(\n  array: Type[],\n  n: number,\n  isValid?: (candidate: Type) => boolean,\n): Type[] | undefined {\n  if (n < 1) {\n    return [];\n  }\n  if (n === 1 && isValid === undefined) {\n    return array;\n  }\n  const result: Type[] = [];\n  for (let i = 0; i < array.length; i += n) {\n    if (isValid === undefined || isValid(array[i]) === true) {\n      result.push(array[i]);\n    } else {\n      return undefined;\n    }\n  }\n  return result;\n}\n","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nimport { Size, CartesianViewBox, CartesianTickItem } from './types';\n\nexport function getAngledTickWidth(contentSize: Size, unitSize: Size, angle: number) {\n  const size = { width: contentSize.width + unitSize.width, height: contentSize.height + unitSize.height };\n\n  return getAngledRectangleWidth(size, angle);\n}\n\nexport function getTickBoundaries(viewBox: CartesianViewBox, sign: number, sizeKey: string) {\n  const isWidth = sizeKey === 'width';\n  const { x, y, width, height } = viewBox;\n  if (sign === 1) {\n    return {\n      start: isWidth ? x : y,\n      end: isWidth ? x + width : y + height,\n    };\n  }\n  return {\n    start: isWidth ? x + width : y + height,\n    end: isWidth ? x : y,\n  };\n}\n\nexport function isVisible(\n  sign: number,\n  tickPosition: number,\n  getSize: () => number,\n  start: number,\n  end: number,\n): boolean {\n  /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n   * the tick's size. */\n  if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n    return false;\n  }\n\n  const size = getSize();\n\n  return sign * (tickPosition - (sign * size) / 2 - start) >= 0 && sign * (tickPosition + (sign * size) / 2 - end) <= 0;\n}\n\nexport function getNumberIntervalTicks(ticks: CartesianTickItem[], interval: number) {\n  return getEveryNthWithCondition(ticks, interval + 1);\n}\n","import isFunction from 'lodash/isFunction';\nimport { CartesianTickItem, Size } from '../util/types';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Props as CartesianAxisProps } from './CartesianAxis';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\n\nexport type Sign = 0 | 1 | -1;\n\nfunction getTicksEnd(\n  sign: Sign,\n  boundaries: { start: number; end: number },\n  getTickSize: (tick: CartesianTickItem, index: number) => number,\n  ticks: CartesianTickItem[],\n  minTickGap: number,\n): CartesianTickItem[] {\n  const result = (ticks || []).slice();\n  const len = result.length;\n\n  const { start } = boundaries;\n  let { end } = boundaries;\n\n  for (let i = len - 1; i >= 0; i--) {\n    let entry = result[i];\n    let size: number | undefined;\n    const getSize = () => {\n      if (size === undefined) {\n        size = getTickSize(entry, i);\n      }\n\n      return size;\n    };\n\n    if (i === len - 1) {\n      const gap = sign * (entry.coordinate + (sign * getSize()) / 2 - end);\n      result[i] = entry = {\n        ...entry,\n        tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate,\n      };\n    } else {\n      result[i] = entry = { ...entry, tickCoord: entry.coordinate };\n    }\n\n    const isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n\n    if (isShow) {\n      end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n      result[i] = { ...entry, isShow: true };\n    }\n  }\n\n  return result;\n}\n\nfunction getTicksStart(\n  sign: Sign,\n  boundaries: { start: number; end: number },\n  getTickSize: (tick: CartesianTickItem, index: number) => number,\n  ticks: CartesianTickItem[],\n  minTickGap: number,\n  preserveEnd?: boolean,\n): CartesianTickItem[] {\n  const result = (ticks || []).slice();\n  const len = result.length;\n\n  let { start, end } = boundaries;\n\n  if (preserveEnd) {\n    // Try to guarantee the tail to be displayed\n    let tail = ticks[len - 1];\n    const tailSize = getTickSize(tail, len - 1);\n    const tailGap = sign * (tail.coordinate + (sign * tailSize) / 2 - end);\n    result[len - 1] = tail = {\n      ...tail,\n      tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate,\n    };\n\n    const isTailShow = isVisible(sign, tail.tickCoord, () => tailSize, start, end);\n\n    if (isTailShow) {\n      end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n      result[len - 1] = { ...tail, isShow: true };\n    }\n  }\n\n  const count = preserveEnd ? len - 1 : len;\n  for (let i = 0; i < count; i++) {\n    let entry = result[i];\n    let size: number | undefined;\n    const getSize = () => {\n      if (size === undefined) {\n        size = getTickSize(entry, i);\n      }\n\n      return size;\n    };\n\n    if (i === 0) {\n      const gap = sign * (entry.coordinate - (sign * getSize()) / 2 - start);\n      result[i] = entry = {\n        ...entry,\n        tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate,\n      };\n    } else {\n      result[i] = entry = { ...entry, tickCoord: entry.coordinate };\n    }\n\n    const isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n\n    if (isShow) {\n      start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n      result[i] = { ...entry, isShow: true };\n    }\n  }\n\n  return result;\n}\n\nexport function getTicks(props: CartesianAxisProps, fontSize?: string, letterSpacing?: string): any[] {\n  const { tick, ticks, viewBox, minTickGap, orientation, interval, tickFormatter, unit, angle } = props;\n\n  if (!ticks || !ticks.length || !tick) {\n    return [];\n  }\n\n  if (isNumber(interval) || Global.isSsr) {\n    return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n  }\n\n  let candidates: CartesianTickItem[] = [];\n\n  const sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n  const unitSize: Size =\n    unit && sizeKey === 'width' ? getStringSize(unit, { fontSize, letterSpacing }) : { width: 0, height: 0 };\n\n  const getTickSize = (content: CartesianTickItem, index: number) => {\n    const value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n    // Recharts only supports angles when sizeKey === 'width'\n    return sizeKey === 'width'\n      ? getAngledTickWidth(getStringSize(value, { fontSize, letterSpacing }), unitSize, angle)\n      : getStringSize(value, { fontSize, letterSpacing })[sizeKey];\n  };\n\n  const sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n  const boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n\n  if (interval === 'equidistantPreserveStart') {\n    return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n  }\n\n  if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n    candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n  } else {\n    candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n  }\n\n  return candidates.filter(entry => entry.isShow);\n}\n","import { isVisible } from '../util/TickUtils';\nimport { CartesianTickItem } from '../util/types';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nimport { Sign } from './getTicks';\n\nexport function getEquidistantTicks(\n  sign: Sign,\n  boundaries: { start: number; end: number },\n  getTickSize: (tick: CartesianTickItem, index: number) => number,\n  ticks: CartesianTickItem[],\n  minTickGap: number,\n): CartesianTickItem[] {\n  const result = (ticks || []).slice();\n\n  const { start: initialStart, end } = boundaries;\n  let index = 0;\n  // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n  // For now, start from every tick\n  let stepsize = 1;\n  let start = initialStart;\n\n  while (stepsize <= result.length) {\n    // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n    // If it can not, then increase the stepsize by 1, and try again.\n\n    const entry = ticks?.[index];\n\n    // Break condition - If we have evaluate all the ticks, then we are done.\n    if (entry === undefined) {\n      return getEveryNthWithCondition(ticks, stepsize);\n    }\n\n    // Check if the element collides with the next element\n    const i = index;\n    let size: number | undefined;\n    const getSize = () => {\n      if (size === undefined) {\n        size = getTickSize(entry, i);\n      }\n\n      return size;\n    };\n\n    const tickCoord = entry.coordinate;\n    // We will always show the first tick.\n    const isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n\n    if (!isShow) {\n      // Start all over with a larger stepsize\n      index = 0;\n      start = initialStart;\n      stepsize += 1;\n    }\n\n    if (isShow) {\n      // If it can be shown, update the start\n      start = tickCoord + sign * (getSize() / 2 + minTickGap);\n      index += stepsize;\n    }\n  }\n\n  return [];\n}\n","/**\n * @fileOverview Cartesian Axis\n */\nimport React, { ReactElement, ReactNode, Component, SVGProps } from 'react';\n\nimport isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport {\n  CartesianViewBox,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n  CartesianTickItem,\n  AxisInterval,\n} from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\nexport type Orientation = 'top' | 'bottom' | 'left' | 'right';\n/** A unit to be appended to a value */\nexport type Unit = string | number;\n/** The formatter function of tick */\nexport type TickFormatter = (value: any, index: number) => string;\n\nexport interface CartesianAxisProps {\n  className?: string;\n  x?: number;\n  y?: number;\n  width?: number;\n  height?: number;\n  unit?: Unit;\n  orientation?: Orientation;\n  // The viewBox of svg\n  viewBox?: CartesianViewBox;\n  tick?: SVGProps<SVGTextElement> | ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | boolean;\n  axisLine?: boolean | SVGProps<SVGLineElement>;\n  tickLine?: boolean | SVGProps<SVGLineElement>;\n  mirror?: boolean;\n  tickMargin?: number;\n  hide?: boolean;\n  label?: any;\n\n  minTickGap?: number;\n  ticks?: CartesianTickItem[];\n  tickSize?: number;\n  tickFormatter?: TickFormatter;\n  ticksGenerator?: (props?: CartesianAxisProps) => CartesianTickItem[];\n  interval?: AxisInterval;\n  /** Angle in which ticks will be rendered. */\n  angle?: number;\n}\n\ninterface IState {\n  fontSize: string;\n  letterSpacing: string;\n}\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGElement>, 'viewBox'> & CartesianAxisProps;\n\nexport class CartesianAxis extends Component<Props, IState> {\n  static displayName = 'CartesianAxis';\n\n  static defaultProps = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    viewBox: { x: 0, y: 0, width: 0, height: 0 },\n    // The orientation of axis\n    orientation: 'bottom',\n    // The ticks\n    ticks: [] as CartesianAxisProps['ticks'],\n\n    stroke: '#666',\n    tickLine: true,\n    axisLine: true,\n    tick: true,\n    mirror: false,\n\n    minTickGap: 5,\n    // The width or height of tick\n    tickSize: 6,\n    tickMargin: 2,\n    interval: 'preserveEnd',\n  };\n\n  private layerReference: any;\n\n  constructor(props: Props) {\n    super(props);\n    this.state = { fontSize: '', letterSpacing: '' };\n  }\n\n  shouldComponentUpdate({ viewBox, ...restProps }: Props, nextState: IState) {\n    // props.viewBox is sometimes generated every time -\n    // check that specially as object equality is likely to fail\n    const { viewBox: viewBoxOld, ...restPropsOld } = this.props;\n    return (\n      !shallowEqual(viewBox, viewBoxOld) ||\n      !shallowEqual(restProps, restPropsOld) ||\n      !shallowEqual(nextState, this.state)\n    );\n  }\n\n  componentDidMount() {\n    const htmlLayer: SVGElement = this.layerReference;\n    if (!htmlLayer) return;\n    const tick: Element = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n    if (tick) {\n      this.setState({\n        fontSize: window.getComputedStyle(tick).fontSize,\n        letterSpacing: window.getComputedStyle(tick).letterSpacing,\n      });\n    }\n  }\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  getTickLineCoord(data: CartesianTickItem) {\n    const { x, y, width, height, orientation, tickSize, mirror, tickMargin } = this.props;\n    let x1, x2, y1, y2, tx, ty;\n\n    const sign = mirror ? -1 : 1;\n    const finalTickSize = data.tickSize || tickSize;\n    const 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      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      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      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 { line: { x1, y1, x2, y2 }, tick: { x: tx, y: ty } };\n  }\n\n  getTickTextAnchor() {\n    const { orientation, mirror } = this.props;\n    let textAnchor;\n\n    switch (orientation) {\n      case 'left':\n        textAnchor = mirror ? 'start' : 'end';\n        break;\n      case 'right':\n        textAnchor = mirror ? 'end' : 'start';\n        break;\n      default:\n        textAnchor = 'middle';\n        break;\n    }\n\n    return textAnchor;\n  }\n\n  getTickVerticalAnchor() {\n    const { orientation, mirror } = this.props;\n    let verticalAnchor = 'end';\n\n    switch (orientation) {\n      case 'left':\n      case 'right':\n        verticalAnchor = 'middle';\n        break;\n      case 'top':\n        verticalAnchor = mirror ? 'start' : 'end';\n        break;\n      default:\n        verticalAnchor = mirror ? 'end' : 'start';\n        break;\n    }\n\n    return verticalAnchor;\n  }\n\n  renderAxisLine() {\n    const { x, y, width, height, orientation, mirror, axisLine } = this.props;\n    let props: SVGProps<SVGLineElement> = {\n      ...filterProps(this.props, false),\n      ...filterProps(axisLine, false),\n      fill: 'none',\n    };\n\n    if (orientation === 'top' || orientation === 'bottom') {\n      const needHeight = +((orientation === 'top' && !mirror) || (orientation === 'bottom' && mirror));\n      props = {\n        ...props,\n        x1: x,\n        y1: y + needHeight * height,\n        x2: x + width,\n        y2: y + needHeight * height,\n      };\n    } else {\n      const needWidth = +((orientation === 'left' && !mirror) || (orientation === 'right' && mirror));\n      props = {\n        ...props,\n        x1: x + needWidth * width,\n        y1: y,\n        x2: x + needWidth * width,\n        y2: y + height,\n      };\n    }\n\n    return <line {...props} className={clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))} />;\n  }\n\n  static renderTickItem(option: Props['tick'], props: any, value: ReactNode) {\n    let tickItem;\n\n    if (React.isValidElement(option)) {\n      tickItem = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      tickItem = option(props);\n    } else {\n      tickItem = (\n        <Text {...props} className=\"recharts-cartesian-axis-tick-value\">\n          {value}\n        </Text>\n      );\n    }\n\n    return tickItem;\n  }\n\n  /**\n   * render the ticks\n   * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n   * @param {string} fontSize Fontsize to consider for tick spacing\n   * @param {string} letterSpacing Letterspacing to consider for tick spacing\n   * @return {ReactComponent} renderedTicks\n   */\n  renderTicks(ticks: CartesianTickItem[], fontSize: string, letterSpacing: string) {\n    const { tickLine, stroke, tick, tickFormatter, unit } = this.props;\n    const finalTicks = getTicks({ ...this.props, ticks }, fontSize, letterSpacing);\n    const textAnchor = this.getTickTextAnchor();\n    const verticalAnchor = this.getTickVerticalAnchor();\n    const axisProps = filterProps(this.props, false);\n    const customTickProps = filterProps(tick, false);\n    const tickLineProps = {\n      ...axisProps,\n      fill: 'none',\n      ...filterProps(tickLine, false),\n    };\n    const items = finalTicks.map((entry, i) => {\n      const { line: lineCoord, tick: tickCoord } = this.getTickLineCoord(entry);\n      const tickProps = {\n        textAnchor,\n        verticalAnchor,\n        ...axisProps,\n        stroke: 'none',\n        fill: stroke,\n        ...customTickProps,\n        ...tickCoord,\n        index: i,\n        payload: entry,\n        visibleTicksCount: finalTicks.length,\n        tickFormatter,\n      };\n\n      return (\n        <Layer\n          className=\"recharts-cartesian-axis-tick\"\n          key={`tick-${entry.value}-${entry.coordinate}-${entry.tickCoord}`}\n          {...adaptEventsOfChild(this.props, entry, i)}\n        >\n          {tickLine && (\n            <line\n              {...tickLineProps}\n              {...lineCoord}\n              className={clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))}\n            />\n          )}\n          {tick &&\n            CartesianAxis.renderTickItem(\n              tick,\n              tickProps,\n              `${isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value}${unit || ''}`,\n            )}\n        </Layer>\n      );\n    });\n\n    return <g className=\"recharts-cartesian-axis-ticks\">{items}</g>;\n  }\n\n  render() {\n    const { axisLine, width, height, ticksGenerator, className, hide } = this.props;\n\n    if (hide) {\n      return null;\n    }\n\n    const { ticks, ...noTicksProps } = this.props;\n    let 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 (\n      <Layer\n        className={clsx('recharts-cartesian-axis', className)}\n        ref={ref => {\n          this.layerReference = ref;\n        }}\n      >\n        {axisLine && this.renderAxisLine()}\n        {this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing)}\n        {Label.renderCallByParent(this.props)}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Cartesian Grid\n */\nimport React, { ReactElement, SVGProps } from 'react';\nimport isFunction from 'lodash/isFunction';\n\nimport { warn } from '../util/LogUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { ChartOffset, D3Scale } from '../util/types';\n\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { filterProps } from '../util/ReactUtils';\nimport { getCoordinatesOfGrid, getTicksOfAxis } from '../util/ChartUtils';\nimport { getTicks } from './getTicks';\nimport { CartesianAxis } from './CartesianAxis';\nimport {\n  useArbitraryXAxis,\n  useChartHeight,\n  useChartWidth,\n  useOffset,\n  useYAxisWithFiniteDomainOrRandom,\n} from '../context/chartLayoutContext';\n\ntype XAxisWithD3Scale = Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\ntype YAxisWithD3Scale = Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n\n/**\n * The <CartesianGrid horizontal\n */\nexport type GridLineTypeFunctionProps = Omit<LineItemProps, 'key'> & {\n  // React does not pass the key through when calling cloneElement - so it might be undefined when cloning\n  key: LineItemProps['key'] | undefined;\n  // offset is not present in LineItemProps but it is read from context and then passed to the GridLineType function and element\n  offset: ChartOffset;\n  /**\n   * The first available xAxis. This is rather arbitrary - if there's one XAxis then it's the first one,\n   * if there are multiple then it's a random one.\n   *\n   * If there are no XAxis present then this will be null.\n   */\n  xAxis: null | XAxisWithD3Scale;\n  /**\n   * The first available yAxis. The axes with finite domain will be preferred.\n   *\n   * If there are no YAxis present then this will be null.\n   */\n  yAxis: null | YAxisWithD3Scale;\n};\n\ntype GridLineType =\n  | SVGProps<SVGLineElement>\n  | ReactElement<SVGElement>\n  | ((props: GridLineTypeFunctionProps) => ReactElement<SVGElement>)\n  | boolean;\n\nexport type HorizontalCoordinatesGenerator = (\n  props: {\n    yAxis: any;\n    width: number;\n    height: number;\n    offset: ChartOffset;\n  },\n  syncWithTicks: boolean,\n) => number[];\n\nexport type VerticalCoordinatesGenerator = (\n  props: {\n    xAxis: any;\n    width: number;\n    height: number;\n    offset: ChartOffset;\n  },\n  syncWithTicks: boolean,\n) => number[];\n\ninterface InternalCartesianGridProps {\n  width?: number;\n  height?: number;\n  horizontalCoordinatesGenerator?: HorizontalCoordinatesGenerator;\n  verticalCoordinatesGenerator?: VerticalCoordinatesGenerator;\n}\n\ninterface CartesianGridProps extends InternalCartesianGridProps {\n  /**\n   * The x-coordinate of grid.\n   * If left undefined, it will be computed from the chart's offset and margins.\n   */\n  x?: number;\n  /**\n   * The y-coordinate of grid.\n   * If left undefined, it will be computed from the chart's offset and margins.\n   */\n  y?: number;\n  horizontal?: GridLineType;\n  vertical?: GridLineType;\n  /**\n   * Array of coordinates in pixels where to draw horizontal grid lines.\n   * Has priority over syncWithTicks and horizontalValues.\n   */\n  horizontalPoints?: number[];\n  /**\n   * Array of coordinates in pixels where to draw vertical grid lines.\n   * Has priority over syncWithTicks and horizontalValues.\n   */\n  verticalPoints?: number[];\n  /**\n   * Defines background color of stripes.\n   *\n   * The values from this array will be passed in as the `fill` property in a `rect` SVG element.\n   * For possible values see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill#rect\n   *\n   * In case there are more stripes than colors, the colors will start from beginning\n   * So for example: verticalFill['yellow', 'black'] produces a pattern of yellow|black|yellow|black\n   *\n   * If this is undefined, or an empty array, then there is no background fill.\n   */\n  verticalFill?: string[];\n  /**\n   * Defines background color of stripes.\n   *\n   * The values from this array will be passed in as the `fill` property in a `rect` SVG element.\n   * For possible values see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill#rect\n   *\n   * In case there are more stripes than colors, the colors will start from beginning\n   * So for example: horizontalFill['yellow', 'black'] produces a pattern of yellow|black|yellow|black\n   *\n   * If this is undefined, or an empty array, then there is no background fill.\n   */\n  horizontalFill?: string[];\n  /**\n   * If true, only the lines that correspond to the axes ticks values will be drawn.\n   * If false, extra lines could be added for each axis (at min and max coordinates), if there will not such ticks.\n   * horizontalPoints, verticalPoints, horizontalValues, verticalValues have priority over syncWithTicks.\n   */\n  syncWithTicks?: boolean;\n  /**\n   * Array of values, where horizontal lines will be drawn. Numbers or strings, in dependence on axis type.\n   * Has priority over syncWithTicks but not over horizontalValues.\n   */\n  horizontalValues?: number[] | string[];\n  /**\n   * Array of values, where vertical lines will be drawn. Numbers or strings, in dependence on axis type.\n   * Has priority over syncWithTicks but not over verticalValues.\n   */\n  verticalValues?: number[] | string[];\n}\n\ntype AcceptedSvgProps = Omit<SVGProps<SVGRectElement>, 'offset'>;\n\nexport type Props = AcceptedSvgProps & CartesianGridProps;\n\nconst Background = (props: Pick<AcceptedSvgProps, 'fill' | 'fillOpacity' | 'x' | 'y' | 'width' | 'height' | 'ry'>) => {\n  const { fill } = props;\n\n  if (!fill || fill === 'none') {\n    return null;\n  }\n\n  const { fillOpacity, x, y, width, height, ry } = props;\n\n  return (\n    <rect\n      x={x}\n      y={y}\n      ry={ry}\n      width={width}\n      height={height}\n      stroke=\"none\"\n      fill={fill}\n      fillOpacity={fillOpacity}\n      className=\"recharts-cartesian-grid-bg\"\n    />\n  );\n};\n\ntype LineItemProps = Props & {\n  offset: ChartOffset;\n  xAxis: null | XAxisWithD3Scale;\n  yAxis: null | YAxisWithD3Scale;\n  x1: number;\n  y1: number;\n  x2: number;\n  y2: number;\n  key: string;\n  index: number;\n};\n\nfunction renderLineItem(option: GridLineType, props: LineItemProps) {\n  let lineItem;\n\n  if (React.isValidElement(option)) {\n    // @ts-expect-error typescript does not see the props type when cloning an element\n    lineItem = React.cloneElement(option, props);\n  } else if (isFunction(option)) {\n    lineItem = option(props);\n  } else {\n    const { x1, y1, x2, y2, key, ...others } = props;\n    const { offset: __, ...restOfFilteredProps } = filterProps(others, false);\n    lineItem = <line {...restOfFilteredProps} x1={x1} y1={y1} x2={x2} y2={y2} fill=\"none\" key={key} />;\n  }\n\n  return lineItem;\n}\n\ntype GridLinesProps = Props & {\n  offset: GridLineTypeFunctionProps['offset'];\n  xAxis: GridLineTypeFunctionProps['xAxis'];\n  yAxis: GridLineTypeFunctionProps['yAxis'];\n};\n\nfunction HorizontalGridLines(props: GridLinesProps) {\n  const { x, width, horizontal = true, horizontalPoints } = props;\n\n  if (!horizontal || !horizontalPoints || !horizontalPoints.length) {\n    return null;\n  }\n\n  const items = horizontalPoints.map((entry, i) => {\n    const lineItemProps: LineItemProps = {\n      ...props,\n      x1: x,\n      y1: entry,\n      x2: x + width,\n      y2: entry,\n      key: `line-${i}`,\n      index: i,\n    };\n\n    return renderLineItem(horizontal, lineItemProps);\n  });\n\n  return <g className=\"recharts-cartesian-grid-horizontal\">{items}</g>;\n}\n\nfunction VerticalGridLines(props: GridLinesProps) {\n  const { y, height, vertical = true, verticalPoints } = props;\n\n  if (!vertical || !verticalPoints || !verticalPoints.length) {\n    return null;\n  }\n\n  const items = verticalPoints.map((entry, i) => {\n    const lineItemProps: LineItemProps = {\n      ...props,\n      x1: entry,\n      y1: y,\n      x2: entry,\n      y2: y + height,\n      key: `line-${i}`,\n      index: i,\n    };\n\n    return renderLineItem(vertical, lineItemProps);\n  });\n\n  return <g className=\"recharts-cartesian-grid-vertical\">{items}</g>;\n}\n\nfunction HorizontalStripes(props: Props) {\n  const { horizontalFill, fillOpacity, x, y, width, height, horizontalPoints, horizontal = true } = props;\n  if (!horizontal || !horizontalFill || !horizontalFill.length) {\n    return null;\n  }\n\n  // Why =y -y? I was trying to find any difference that this makes, with floating point numbers and edge cases but ... nothing.\n  const roundedSortedHorizontalPoints = horizontalPoints.map(e => Math.round(e + y - y)).sort((a, b) => a - b);\n  // Why is this condition `!==` instead of `<=` ?\n  if (y !== roundedSortedHorizontalPoints[0]) {\n    roundedSortedHorizontalPoints.unshift(0);\n  }\n\n  const items = roundedSortedHorizontalPoints.map((entry, i) => {\n    // Why do we strip only the last stripe if it is invisible, and not all invisible stripes?\n    const lastStripe = !roundedSortedHorizontalPoints[i + 1];\n    const lineHeight = lastStripe ? y + height - entry : roundedSortedHorizontalPoints[i + 1] - entry;\n    if (lineHeight <= 0) {\n      return null;\n    }\n    const colorIndex = i % horizontalFill.length;\n    return (\n      <rect\n        key={`react-${i}`} // eslint-disable-line react/no-array-index-key\n        y={entry}\n        x={x}\n        height={lineHeight}\n        width={width}\n        stroke=\"none\"\n        fill={horizontalFill[colorIndex]}\n        fillOpacity={fillOpacity}\n        className=\"recharts-cartesian-grid-bg\"\n      />\n    );\n  });\n\n  return <g className=\"recharts-cartesian-gridstripes-horizontal\">{items}</g>;\n}\n\nfunction VerticalStripes(props: Props) {\n  const { vertical = true, verticalFill, fillOpacity, x, y, width, height, verticalPoints } = props;\n  if (!vertical || !verticalFill || !verticalFill.length) {\n    return null;\n  }\n\n  const roundedSortedVerticalPoints = verticalPoints.map(e => Math.round(e + x - x)).sort((a, b) => a - b);\n\n  if (x !== roundedSortedVerticalPoints[0]) {\n    roundedSortedVerticalPoints.unshift(0);\n  }\n\n  const items = roundedSortedVerticalPoints.map((entry, i) => {\n    const lastStripe = !roundedSortedVerticalPoints[i + 1];\n    const lineWidth = lastStripe ? x + width - entry : roundedSortedVerticalPoints[i + 1] - entry;\n\n    if (lineWidth <= 0) {\n      return null;\n    }\n    const colorIndex = i % verticalFill.length;\n    return (\n      <rect\n        key={`react-${i}`} // eslint-disable-line react/no-array-index-key\n        x={entry}\n        y={y}\n        width={lineWidth}\n        height={height}\n        stroke=\"none\"\n        fill={verticalFill[colorIndex]}\n        fillOpacity={fillOpacity}\n        className=\"recharts-cartesian-grid-bg\"\n      />\n    );\n  });\n\n  return <g className=\"recharts-cartesian-gridstripes-vertical\">{items}</g>;\n}\n\nconst defaultVerticalCoordinatesGenerator: VerticalCoordinatesGenerator = (\n  { xAxis, width, height, offset },\n  syncWithTicks,\n) =>\n  getCoordinatesOfGrid(\n    getTicks({\n      ...CartesianAxis.defaultProps,\n      ...xAxis,\n      ticks: getTicksOfAxis(xAxis, true),\n      viewBox: { x: 0, y: 0, width, height },\n    }),\n    offset.left,\n    offset.left + offset.width,\n    syncWithTicks,\n  );\n\nconst defaultHorizontalCoordinatesGenerator: HorizontalCoordinatesGenerator = (\n  { yAxis, width, height, offset },\n  syncWithTicks,\n) =>\n  getCoordinatesOfGrid(\n    getTicks({\n      ...CartesianAxis.defaultProps,\n      ...yAxis,\n      ticks: getTicksOfAxis(yAxis, true),\n      viewBox: { x: 0, y: 0, width, height },\n    }),\n    offset.top,\n    offset.top + offset.height,\n    syncWithTicks,\n  );\n\nconst defaultProps: Partial<Props> = {\n  horizontal: true,\n  vertical: true,\n  // The ordinates of horizontal grid lines\n  horizontalPoints: [],\n  // The abscissas of vertical grid lines\n  verticalPoints: [],\n\n  stroke: '#ccc',\n  fill: 'none',\n  // The fill of colors of grid lines\n  verticalFill: [],\n  horizontalFill: [],\n};\n\nexport function CartesianGrid(props: Props) {\n  const chartWidth = useChartWidth();\n  const chartHeight = useChartHeight();\n  const offset = useOffset();\n  const propsIncludingDefaults: Props = {\n    ...props,\n    stroke: props.stroke ?? defaultProps.stroke,\n    fill: props.fill ?? defaultProps.fill,\n    horizontal: props.horizontal ?? defaultProps.horizontal,\n    horizontalFill: props.horizontalFill ?? defaultProps.horizontalFill,\n    vertical: props.vertical ?? defaultProps.vertical,\n    verticalFill: props.verticalFill ?? defaultProps.verticalFill,\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  };\n\n  const { x, y, width, height, syncWithTicks, horizontalValues, verticalValues } = propsIncludingDefaults;\n\n  // @ts-expect-error the scale prop is mixed up - we need to untagle this at some point\n  const xAxis: XAxisWithD3Scale = useArbitraryXAxis();\n  // @ts-expect-error the scale prop is mixed up - we need to untagle this at some point\n  const yAxis: YAxisWithD3Scale = useYAxisWithFiniteDomainOrRandom();\n\n  if (\n    !isNumber(width) ||\n    width <= 0 ||\n    !isNumber(height) ||\n    height <= 0 ||\n    !isNumber(x) ||\n    x !== +x ||\n    !isNumber(y) ||\n    y !== +y\n  ) {\n    return null;\n  }\n\n  /*\n   * verticalCoordinatesGenerator and horizontalCoordinatesGenerator are defined\n   * outside of the propsIncludingDefaults because they were never part of the original props\n   * and they were never passed as a prop down to horizontal/vertical custom elements.\n   * If we add these two to propsIncludingDefaults then we are changing public API.\n   * Not a bad thing per se but also not necessary.\n   */\n  const verticalCoordinatesGenerator =\n    propsIncludingDefaults.verticalCoordinatesGenerator || defaultVerticalCoordinatesGenerator;\n  const horizontalCoordinatesGenerator =\n    propsIncludingDefaults.horizontalCoordinatesGenerator || defaultHorizontalCoordinatesGenerator;\n\n  let { horizontalPoints, verticalPoints } = propsIncludingDefaults;\n\n  // No horizontal points are specified\n  if ((!horizontalPoints || !horizontalPoints.length) && isFunction(horizontalCoordinatesGenerator)) {\n    const isHorizontalValues = horizontalValues && horizontalValues.length;\n\n    const generatorResult = horizontalCoordinatesGenerator(\n      {\n        yAxis: yAxis\n          ? {\n              ...yAxis,\n              ticks: isHorizontalValues ? horizontalValues : yAxis.ticks,\n            }\n          : undefined,\n        width: chartWidth,\n        height: chartHeight,\n        offset,\n      },\n      isHorizontalValues ? true : syncWithTicks,\n    );\n    warn(\n      Array.isArray(generatorResult),\n      `horizontalCoordinatesGenerator should return Array but instead it returned [${typeof generatorResult}]`,\n    );\n    if (Array.isArray(generatorResult)) {\n      horizontalPoints = generatorResult;\n    }\n  }\n\n  // No vertical points are specified\n  if ((!verticalPoints || !verticalPoints.length) && isFunction(verticalCoordinatesGenerator)) {\n    const isVerticalValues = verticalValues && verticalValues.length;\n    const generatorResult = verticalCoordinatesGenerator(\n      {\n        xAxis: xAxis\n          ? {\n              ...xAxis,\n              ticks: isVerticalValues ? verticalValues : xAxis.ticks,\n            }\n          : undefined,\n        width: chartWidth,\n        height: chartHeight,\n        offset,\n      },\n      isVerticalValues ? true : syncWithTicks,\n    );\n    warn(\n      Array.isArray(generatorResult),\n      `verticalCoordinatesGenerator should return Array but instead it returned [${typeof generatorResult}]`,\n    );\n    if (Array.isArray(generatorResult)) {\n      verticalPoints = generatorResult;\n    }\n  }\n\n  return (\n    <g className=\"recharts-cartesian-grid\">\n      <Background\n        fill={propsIncludingDefaults.fill}\n        fillOpacity={propsIncludingDefaults.fillOpacity}\n        x={propsIncludingDefaults.x}\n        y={propsIncludingDefaults.y}\n        width={propsIncludingDefaults.width}\n        height={propsIncludingDefaults.height}\n        ry={propsIncludingDefaults.ry}\n      />\n      <HorizontalGridLines\n        {...propsIncludingDefaults}\n        offset={offset}\n        horizontalPoints={horizontalPoints}\n        xAxis={xAxis}\n        yAxis={yAxis}\n      />\n\n      <VerticalGridLines\n        {...propsIncludingDefaults}\n        offset={offset}\n        verticalPoints={verticalPoints}\n        xAxis={xAxis}\n        yAxis={yAxis}\n      />\n\n      <HorizontalStripes {...propsIncludingDefaults} horizontalPoints={horizontalPoints} />\n\n      <VerticalStripes {...propsIncludingDefaults} verticalPoints={verticalPoints} />\n    </g>\n  );\n}\n\nCartesianGrid.displayName = 'CartesianGrid';\n","/**\n * @fileOverview Line\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\n\nimport clsx from 'clsx';\nimport { Curve, CurveType, Props as CurveProps, Point as CurvePoint } from '../shape/Curve';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelType } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar, ErrorBarDataPointFormatter, Props as ErrorBarProps } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, filterProps, hasClipDot } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport {\n  D3Scale,\n  LegendType,\n  TooltipType,\n  AnimationTiming,\n  ChartOffset,\n  DataKey,\n  TickItem,\n  AnimationDuration,\n  ActiveShape,\n} from '../util/types';\n\nexport type LineDot = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | DotProps | boolean;\n\nexport interface LinePointItem extends CurvePoint {\n  value?: number;\n  payload?: any;\n}\n\ninterface InternalLineProps {\n  top?: number;\n  left?: number;\n  width?: number;\n  height?: number;\n  points?: LinePointItem[];\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n}\n\ninterface LineProps extends InternalLineProps {\n  className?: string;\n  data?: any;\n  type?: CurveType;\n  unit?: string | number;\n  name?: string | number;\n  yAxisId?: string | number;\n  xAxisId?: string | number;\n  dataKey?: DataKey<any>;\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  layout?: 'horizontal' | 'vertical';\n  connectNulls?: boolean;\n  hide?: boolean;\n\n  // whether have dot in line\n  activeDot?: ActiveShape<DotProps> | DotProps;\n  dot?: LineDot;\n\n  onAnimationStart?: () => void;\n  onAnimationEnd?: () => void;\n\n  isAnimationActive?: boolean;\n  animateNewValues?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n  animationId?: number;\n  id?: string;\n  label?: ImplicitLabelType;\n}\n\nexport type Props = Omit<CurveProps, 'points' | 'pathRef'> & LineProps;\n\ninterface State {\n  isAnimationFinished?: boolean;\n  totalLength?: number;\n  prevPoints?: LinePointItem[];\n  curPoints?: LinePointItem[];\n  prevAnimationId?: number;\n}\n\nexport class Line extends PureComponent<Props, State> {\n  static displayName = 'Line';\n\n  static defaultProps = {\n    xAxisId: 0,\n    yAxisId: 0,\n    connectNulls: false,\n    activeDot: true,\n    dot: true,\n    legendType: 'line',\n    stroke: '#3182bd',\n    strokeWidth: 1,\n    fill: '#fff',\n    points: [] as LinePointItem[],\n    isAnimationActive: !Global.isSsr,\n    animateNewValues: true,\n    animationBegin: 0,\n    animationDuration: 1500,\n    animationEasing: 'ease',\n    hide: false,\n    label: false,\n  };\n\n  /**\n   * Compose the data of each group\n   * @param {Object} props The props from the component\n   * @param  {Object} xAxis   The configuration of x-axis\n   * @param  {Object} yAxis   The configuration of y-axis\n   * @param  {String} dataKey The unique key of a group\n   * @return {Array}  Composed data\n   */\n  static getComposedData = ({\n    props,\n    xAxis,\n    yAxis,\n    xAxisTicks,\n    yAxisTicks,\n    dataKey,\n    bandSize,\n    displayedData,\n    offset,\n  }: {\n    props: Props;\n    xAxis: Props['xAxis'];\n    yAxis: Props['yAxis'];\n    xAxisTicks: TickItem[];\n    yAxisTicks: TickItem[];\n    dataKey: Props['dataKey'];\n    bandSize: number;\n    displayedData: any[];\n    offset: ChartOffset;\n  }) => {\n    const { layout } = props;\n\n    const points = displayedData.map((entry, index) => {\n      const value = getValueByDataKey(entry, dataKey);\n\n      if (layout === 'horizontal') {\n        return {\n          x: getCateCoordinateOfLine({ axis: xAxis, ticks: xAxisTicks, bandSize, entry, index }),\n          y: isNil(value) ? null : yAxis.scale(value),\n          value,\n          payload: entry,\n        };\n      }\n\n      return {\n        x: isNil(value) ? null : xAxis.scale(value),\n        y: getCateCoordinateOfLine({ axis: yAxis, ticks: yAxisTicks, bandSize, entry, index }),\n        value,\n        payload: entry,\n      };\n    });\n\n    return { points, layout, ...offset };\n  };\n\n  mainCurve?: SVGPathElement;\n\n  state: State = {\n    isAnimationFinished: true,\n    totalLength: 0,\n  };\n\n  componentDidMount() {\n    if (!this.props.isAnimationActive) {\n      return;\n    }\n\n    const totalLength = this.getTotalLength();\n    this.setState({ totalLength });\n  }\n\n  componentDidUpdate(): void {\n    if (!this.props.isAnimationActive) {\n      return;\n    }\n\n    const totalLength = this.getTotalLength();\n    if (totalLength !== this.state.totalLength) {\n      this.setState({ totalLength });\n    }\n  }\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curPoints: nextProps.points,\n        prevPoints: prevState.curPoints,\n      };\n    }\n    if (nextProps.points !== prevState.curPoints) {\n      return {\n        curPoints: nextProps.points,\n      };\n    }\n\n    return null;\n  }\n\n  getTotalLength() {\n    const curveDom = this.mainCurve;\n\n    try {\n      return (curveDom && curveDom.getTotalLength && curveDom.getTotalLength()) || 0;\n    } catch (err) {\n      return 0;\n    }\n  }\n\n  generateSimpleStrokeDasharray = (totalLength: number, length: number): string => {\n    return `${length}px ${totalLength - length}px`;\n  };\n\n  getStrokeDasharray = (length: number, totalLength: number, lines: number[]) => {\n    const lineLength = lines.reduce((pre, next) => pre + next);\n\n    // if lineLength is 0 return the default when no strokeDasharray is provided\n    if (!lineLength) {\n      return this.generateSimpleStrokeDasharray(totalLength, length);\n    }\n\n    const count = Math.floor(length / lineLength);\n    const remainLength = length % lineLength;\n    const restLength = totalLength - length;\n\n    let remainLines: number[] = [];\n    for (let i = 0, sum = 0; i < lines.length; sum += lines[i], ++i) {\n      if (sum + lines[i] > remainLength) {\n        remainLines = [...lines.slice(0, i), remainLength - sum];\n        break;\n      }\n    }\n\n    const emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n\n    return [...Line.repeat(lines, count), ...remainLines, ...emptyLines].map(line => `${line}px`).join(', ');\n  };\n\n  id = uniqueId('recharts-line-');\n\n  pathRef = (node: SVGPathElement): void => {\n    this.mainCurve = node;\n  };\n\n  static repeat(lines: number[], count: number) {\n    const linesUnit = lines.length % 2 !== 0 ? [...lines, 0] : lines;\n    let result: number[] = [];\n\n    for (let i = 0; i < count; ++i) {\n      result = [...result, ...linesUnit];\n    }\n\n    return result;\n  }\n\n  handleAnimationEnd = () => {\n    this.setState({ isAnimationFinished: true });\n\n    if (this.props.onAnimationEnd) {\n      this.props.onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    this.setState({ isAnimationFinished: false });\n\n    if (this.props.onAnimationStart) {\n      this.props.onAnimationStart();\n    }\n  };\n\n  renderErrorBar(needClip: boolean, clipPathId: string) {\n    if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n      return null;\n    }\n\n    const { points, xAxis, yAxis, layout, children } = this.props;\n    const errorBarItems = findAllByType(children, ErrorBar);\n\n    if (!errorBarItems) {\n      return null;\n    }\n\n    const dataPointFormatter: ErrorBarDataPointFormatter = (dataPoint: LinePointItem, dataKey) => {\n      return {\n        x: dataPoint.x,\n        y: dataPoint.y,\n        value: dataPoint.value,\n        errorVal: getValueByDataKey(dataPoint.payload, dataKey),\n      };\n    };\n\n    const errorBarProps = {\n      clipPath: needClip ? `url(#clipPath-${clipPathId})` : null,\n    };\n\n    return (\n      <Layer {...errorBarProps}>\n        {errorBarItems.map((item: ReactElement<ErrorBarProps>) =>\n          React.cloneElement(item, {\n            key: `bar-${item.props.dataKey}`,\n            data: points,\n            xAxis,\n            yAxis,\n            layout,\n            dataPointFormatter,\n          }),\n        )}\n      </Layer>\n    );\n  }\n\n  static renderDotItem(option: LineDot, props: any) {\n    let dotItem;\n\n    if (React.isValidElement(option)) {\n      dotItem = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      dotItem = option(props);\n    } else {\n      const { key, ...dotProps } = props;\n      const className = clsx('recharts-line-dot', typeof option !== 'boolean' ? option.className : '');\n      dotItem = <Dot key={key} {...dotProps} className={className} />;\n    }\n\n    return dotItem;\n  }\n\n  renderDots(needClip: boolean, clipDot: boolean, clipPathId: string) {\n    const { isAnimationActive } = this.props;\n\n    if (isAnimationActive && !this.state.isAnimationFinished) {\n      return null;\n    }\n    const { dot, points, dataKey } = this.props;\n    const lineProps = filterProps(this.props, false);\n    const customDotProps = filterProps(dot, true);\n    const dots = points.map((entry, i) => {\n      const dotProps = {\n        key: `dot-${i}`,\n        r: 3,\n        ...lineProps,\n        ...customDotProps,\n        value: entry.value,\n        dataKey,\n        cx: entry.x,\n        cy: entry.y,\n        index: i,\n        payload: entry.payload,\n      };\n\n      return Line.renderDotItem(dot, dotProps);\n    });\n    const dotsProps = {\n      clipPath: needClip ? `url(#clipPath-${clipDot ? '' : 'dots-'}${clipPathId})` : null,\n    };\n\n    return (\n      <Layer className=\"recharts-line-dots\" key=\"dots\" {...dotsProps}>\n        {dots}\n      </Layer>\n    );\n  }\n\n  renderCurveStatically(\n    points: LinePointItem[],\n    needClip: boolean,\n    clipPathId: string,\n    props?: { strokeDasharray: string },\n  ) {\n    const { type, layout, connectNulls, ref, ...others } = this.props;\n    const curveProps = {\n      ...filterProps(others, true),\n      fill: 'none',\n      className: 'recharts-line-curve',\n      clipPath: needClip ? `url(#clipPath-${clipPathId})` : null,\n      points,\n      ...props,\n      type,\n      layout,\n      connectNulls,\n    };\n\n    return <Curve {...curveProps} pathRef={this.pathRef} />;\n  }\n\n  renderCurveWithAnimation(needClip: boolean, clipPathId: string) {\n    const {\n      points,\n      strokeDasharray,\n      isAnimationActive,\n      animationBegin,\n      animationDuration,\n      animationEasing,\n      animationId,\n      animateNewValues,\n      width,\n      height,\n    } = this.props;\n    const { prevPoints, totalLength } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`line-${animationId}`}\n        onAnimationEnd={this.handleAnimationEnd}\n        onAnimationStart={this.handleAnimationStart}\n      >\n        {({ t }: { t: number }) => {\n          if (prevPoints) {\n            const prevPointsDiffFactor = prevPoints.length / points.length;\n            const stepData = points.map((entry, index) => {\n              const prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n              if (prevPoints[prevPointIndex]) {\n                const prev = prevPoints[prevPointIndex];\n                const interpolatorX = interpolateNumber(prev.x, entry.x);\n                const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n                return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n              }\n\n              // magic number of faking previous x and y location\n              if (animateNewValues) {\n                const interpolatorX = interpolateNumber(width * 2, entry.x);\n                const interpolatorY = interpolateNumber(height / 2, entry.y);\n                return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n              }\n              return { ...entry, x: entry.x, y: entry.y };\n            });\n            return this.renderCurveStatically(stepData, needClip, clipPathId);\n          }\n          const interpolator = interpolateNumber(0, totalLength);\n          const curLength = interpolator(t);\n          let currentStrokeDasharray;\n\n          if (strokeDasharray) {\n            const lines = `${strokeDasharray}`.split(/[,\\s]+/gim).map(num => parseFloat(num));\n            currentStrokeDasharray = this.getStrokeDasharray(curLength, totalLength, lines);\n          } else {\n            currentStrokeDasharray = this.generateSimpleStrokeDasharray(totalLength, curLength);\n          }\n\n          return this.renderCurveStatically(points, needClip, clipPathId, {\n            strokeDasharray: currentStrokeDasharray,\n          });\n        }}\n      </Animate>\n    );\n  }\n\n  renderCurve(needClip: boolean, clipPathId: string) {\n    const { points, isAnimationActive } = this.props;\n    const { prevPoints, totalLength } = this.state;\n\n    if (\n      isAnimationActive &&\n      points &&\n      points.length &&\n      ((!prevPoints && totalLength > 0) || !isEqual(prevPoints, points))\n    ) {\n      return this.renderCurveWithAnimation(needClip, clipPathId);\n    }\n\n    return this.renderCurveStatically(points, needClip, clipPathId);\n  }\n\n  render() {\n    const { hide, dot, points, className, xAxis, yAxis, top, left, width, height, isAnimationActive, id } = this.props;\n\n    if (hide || !points || !points.length) {\n      return null;\n    }\n\n    const { isAnimationFinished } = this.state;\n    const hasSinglePoint = points.length === 1;\n    const layerClass = clsx('recharts-line', className);\n    const needClipX = xAxis && xAxis.allowDataOverflow;\n    const needClipY = yAxis && yAxis.allowDataOverflow;\n    const needClip = needClipX || needClipY;\n    const clipPathId = isNil(id) ? this.id : id;\n    const { r = 3, strokeWidth = 2 } = filterProps(dot, false) ?? { r: 3, strokeWidth: 2 };\n    const { clipDot = true } = hasClipDot(dot) ? dot : {};\n    const dotSize = r * 2 + strokeWidth;\n\n    return (\n      <Layer className={layerClass}>\n        {needClipX || needClipY ? (\n          <defs>\n            <clipPath id={`clipPath-${clipPathId}`}>\n              <rect\n                x={needClipX ? left : left - width / 2}\n                y={needClipY ? top : top - height / 2}\n                width={needClipX ? width : width * 2}\n                height={needClipY ? height : height * 2}\n              />\n            </clipPath>\n            {!clipDot && (\n              <clipPath id={`clipPath-dots-${clipPathId}`}>\n                <rect x={left - dotSize / 2} y={top - dotSize / 2} width={width + dotSize} height={height + dotSize} />\n              </clipPath>\n            )}\n          </defs>\n        ) : null}\n        {!hasSinglePoint && this.renderCurve(needClip, clipPathId)}\n        {this.renderErrorBar(needClip, clipPathId)}\n        {(hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId)}\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Area\n */\nimport React, { PureComponent, ReactElement, SVGProps } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport max from 'lodash/max';\nimport isNil from 'lodash/isNil';\nimport isNan from 'lodash/isNaN';\nimport isEqual from 'lodash/isEqual';\nimport { Curve, CurveType, Point as CurvePoint } from '../shape/Curve';\nimport { Dot, Props as DotProps } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { Global } from '../util/Global';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport {\n  D3Scale,\n  LegendType,\n  TooltipType,\n  AnimationTiming,\n  ChartOffset,\n  Coordinate,\n  DataKey,\n  TickItem,\n  AnimationDuration,\n} from '../util/types';\nimport { filterProps, hasClipDot } from '../util/ReactUtils';\n\nexport type AreaDot = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | DotProps | boolean;\ninterface AreaPointItem extends CurvePoint {\n  value?: number | number[];\n  payload?: any;\n}\n\ninterface InternalAreaProps {\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  top?: number;\n  left?: number;\n  width?: number;\n  height?: number;\n  points?: AreaPointItem[];\n  baseLine?: number | Coordinate[];\n}\n\ninterface AreaProps extends InternalAreaProps {\n  className?: string;\n  dataKey: DataKey<any>;\n  data?: any[];\n  type?: CurveType;\n  unit?: string | number;\n  name?: string | number;\n  xAxisId?: string | number;\n  yAxisId?: string | number;\n\n  stackId?: string | number;\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  connectNulls?: boolean;\n  // whether have dot in line\n  activeDot?: AreaDot;\n  dot?: AreaDot;\n\n  label?: any;\n  layout?: 'horizontal' | 'vertical';\n  hide?: boolean;\n  baseValue?: number | 'dataMin' | 'dataMax';\n  isRange?: boolean;\n\n  onAnimationStart?: () => void;\n  onAnimationEnd?: () => void;\n\n  isAnimationActive?: boolean;\n  animateNewValues?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n  animationId?: number;\n  id?: string;\n}\n\nexport type Props = Omit<SVGProps<SVGElement>, 'type' | 'points'> & AreaProps;\n\ninterface State {\n  prevAnimationId?: number;\n  prevPoints?: AreaPointItem[];\n  prevBaseLine?: number | Coordinate[];\n  curPoints?: AreaPointItem[];\n  curBaseLine?: number | Coordinate[];\n  isAnimationFinished?: boolean;\n  totalLength?: number;\n}\n\nexport class Area extends PureComponent<Props, State> {\n  static displayName = 'Area';\n\n  static defaultProps = {\n    stroke: '#3182bd',\n    fill: '#3182bd',\n    fillOpacity: 0.6,\n    xAxisId: 0,\n    yAxisId: 0,\n    legendType: 'line',\n    connectNulls: false,\n    // points of area\n    points: [] as AreaPointItem[],\n    dot: false,\n    activeDot: true,\n    hide: false,\n\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 0,\n    animationDuration: 1500,\n    animationEasing: 'ease',\n  };\n\n  static getBaseValue = (props: Props, item: Area, xAxis: Props['xAxis'], yAxis: Props['yAxis']): number => {\n    const { layout, baseValue: chartBaseValue } = props;\n    const { baseValue: itemBaseValue } = item.props;\n\n    // The baseValue can be defined both on the AreaChart as well as on the Area.\n    // The value for the item takes precedence.\n    const baseValue = itemBaseValue ?? chartBaseValue;\n\n    if (isNumber(baseValue) && typeof baseValue === 'number') {\n      return baseValue;\n    }\n\n    const numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n    const domain = numericAxis.scale.domain();\n\n    if (numericAxis.type === 'number') {\n      const domainMax = Math.max(domain[0], domain[1]);\n      const domainMin = Math.min(domain[0], domain[1]);\n\n      if (baseValue === 'dataMin') {\n        return domainMin;\n      }\n      if (baseValue === 'dataMax') {\n        return domainMax;\n      }\n\n      return domainMax < 0 ? domainMax : Math.max(Math.min(domain[0], domain[1]), 0);\n    }\n\n    if (baseValue === 'dataMin') {\n      return domain[0];\n    }\n    if (baseValue === 'dataMax') {\n      return domain[1];\n    }\n\n    return domain[0];\n  };\n\n  static getComposedData = ({\n    props,\n    item,\n    xAxis,\n    yAxis,\n    xAxisTicks,\n    yAxisTicks,\n    bandSize,\n    dataKey,\n    stackedData,\n    dataStartIndex,\n    displayedData,\n    offset,\n  }: {\n    props: Props;\n    item: Area;\n    bandSize: number;\n    xAxis: InternalAreaProps['xAxis'];\n    yAxis: InternalAreaProps['yAxis'];\n    xAxisTicks: TickItem[];\n    yAxisTicks: TickItem[];\n    stackedData: number[][];\n    dataStartIndex: number;\n    offset: ChartOffset;\n    displayedData: any[];\n    dataKey: Props['dataKey'];\n  }) => {\n    const { layout } = props;\n    const hasStack = stackedData && stackedData.length;\n    const baseValue = Area.getBaseValue(props, item, xAxis, yAxis);\n    const isHorizontalLayout = layout === 'horizontal';\n    let isRange = false;\n\n    const points = displayedData.map((entry, index) => {\n      let value;\n\n      if (hasStack) {\n        value = stackedData[dataStartIndex + index];\n      } else {\n        value = getValueByDataKey(entry, dataKey);\n\n        if (!Array.isArray(value)) {\n          value = [baseValue, value];\n        } else {\n          isRange = true;\n        }\n      }\n\n      const isBreakPoint = value[1] == null || (hasStack && getValueByDataKey(entry, dataKey) == null);\n\n      if (isHorizontalLayout) {\n        return {\n          x: getCateCoordinateOfLine({ axis: xAxis, ticks: xAxisTicks, bandSize, entry, index }),\n          y: isBreakPoint ? null : yAxis.scale(value[1]),\n          value,\n          payload: entry,\n        };\n      }\n\n      return {\n        x: isBreakPoint ? null : xAxis.scale(value[1]),\n        y: getCateCoordinateOfLine({ axis: yAxis, ticks: yAxisTicks, bandSize, entry, index }),\n        value,\n        payload: entry,\n      };\n    });\n\n    let baseLine;\n    if (hasStack || isRange) {\n      baseLine = points.map((entry: AreaPointItem) => {\n        const x = Array.isArray(entry.value) ? entry.value[0] : null;\n        if (isHorizontalLayout) {\n          return {\n            x: entry.x,\n            y: x != null && entry.y != null ? yAxis.scale(x) : null,\n          };\n        }\n        return {\n          x: x != null ? xAxis.scale(x) : null,\n          y: entry.y,\n        };\n      });\n    } else {\n      baseLine = isHorizontalLayout ? yAxis.scale(baseValue) : xAxis.scale(baseValue);\n    }\n\n    return { points, baseLine, layout, isRange, ...offset };\n  };\n\n  static renderDotItem = (option: AreaDot, props: any) => {\n    let dotItem;\n\n    if (React.isValidElement(option)) {\n      dotItem = React.cloneElement(option, props);\n    } else if (isFunction(option)) {\n      dotItem = option(props);\n    } else {\n      const className = clsx('recharts-area-dot', typeof option !== 'boolean' ? option.className : '');\n      const { key, ...rest } = props;\n      dotItem = <Dot {...rest} key={key} className={className} />;\n    }\n\n    return dotItem;\n  };\n\n  state: State = {\n    isAnimationFinished: true,\n  };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curPoints: nextProps.points,\n        curBaseLine: nextProps.baseLine,\n        prevPoints: prevState.curPoints,\n        prevBaseLine: prevState.curBaseLine,\n      };\n    }\n    if (nextProps.points !== prevState.curPoints || nextProps.baseLine !== prevState.curBaseLine) {\n      return {\n        curPoints: nextProps.points,\n        curBaseLine: nextProps.baseLine,\n      };\n    }\n\n    return null;\n  }\n\n  id = uniqueId('recharts-area-');\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n\n    this.setState({ isAnimationFinished: true });\n\n    if (isFunction(onAnimationEnd)) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n    this.setState({ isAnimationFinished: false });\n\n    if (isFunction(onAnimationStart)) {\n      onAnimationStart();\n    }\n  };\n\n  renderDots(needClip: boolean, clipDot: boolean, clipPathId: string) {\n    const { isAnimationActive } = this.props;\n    const { isAnimationFinished } = this.state;\n\n    if (isAnimationActive && !isAnimationFinished) {\n      return null;\n    }\n\n    const { dot, points, dataKey } = this.props;\n    const areaProps = filterProps(this.props, false);\n    const customDotProps = filterProps(dot, true);\n\n    const dots = points.map((entry: AreaPointItem, i: number) => {\n      const dotProps = {\n        key: `dot-${i}`,\n        r: 3,\n        ...areaProps,\n        ...customDotProps,\n        index: i,\n        cx: entry.x,\n        cy: entry.y,\n        dataKey,\n        value: entry.value,\n        payload: entry.payload,\n        points,\n      };\n\n      return Area.renderDotItem(dot, dotProps);\n    });\n    const dotsProps = {\n      clipPath: needClip ? `url(#clipPath-${clipDot ? '' : 'dots-'}${clipPathId})` : null,\n    };\n    return (\n      <Layer className=\"recharts-area-dots\" {...dotsProps}>\n        {dots}\n      </Layer>\n    );\n  }\n\n  renderHorizontalRect(alpha: number) {\n    const { baseLine, points, strokeWidth } = this.props;\n    const startX = points[0].x;\n    const endX = points[points.length - 1].x;\n    const width = alpha * Math.abs(startX - endX);\n    let maxY = max(points.map(entry => entry.y || 0));\n\n    if (isNumber(baseLine) && typeof baseLine === 'number') {\n      maxY = Math.max(baseLine, maxY);\n    } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n      maxY = Math.max(max(baseLine.map(entry => entry.y || 0)), maxY);\n    }\n\n    if (isNumber(maxY)) {\n      return (\n        <rect\n          x={startX < endX ? startX : startX - width}\n          y={0}\n          width={width}\n          height={Math.floor(maxY + (strokeWidth ? parseInt(`${strokeWidth}`, 10) : 1))}\n        />\n      );\n    }\n\n    return null;\n  }\n\n  renderVerticalRect(alpha: number) {\n    const { baseLine, points, strokeWidth } = this.props;\n    const startY = points[0].y;\n    const endY = points[points.length - 1].y;\n    const height = alpha * Math.abs(startY - endY);\n    let maxX = max(points.map(entry => entry.x || 0));\n\n    if (isNumber(baseLine) && typeof baseLine === 'number') {\n      maxX = Math.max(baseLine, maxX);\n    } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n      maxX = Math.max(max(baseLine.map(entry => entry.x || 0)), maxX);\n    }\n\n    if (isNumber(maxX)) {\n      return (\n        <rect\n          x={0}\n          y={startY < endY ? startY : startY - height}\n          width={maxX + (strokeWidth ? parseInt(`${strokeWidth}`, 10) : 1)}\n          height={Math.floor(height)}\n        />\n      );\n    }\n\n    return null;\n  }\n\n  renderClipRect(alpha: number) {\n    const { layout } = this.props;\n\n    if (layout === 'vertical') {\n      return this.renderVerticalRect(alpha);\n    }\n\n    return this.renderHorizontalRect(alpha);\n  }\n\n  renderAreaStatically(points: AreaPointItem[], baseLine: Props['baseLine'], needClip: boolean, clipPathId: string) {\n    const { layout, type, stroke, connectNulls, isRange, ref, ...others } = this.props;\n\n    return (\n      <Layer clipPath={needClip ? `url(#clipPath-${clipPathId})` : null}>\n        <Curve\n          {...filterProps(others, true)}\n          points={points}\n          connectNulls={connectNulls}\n          type={type}\n          baseLine={baseLine}\n          layout={layout}\n          stroke=\"none\"\n          className=\"recharts-area-area\"\n        />\n        {stroke !== 'none' && (\n          <Curve\n            {...filterProps(this.props, false)}\n            className=\"recharts-area-curve\"\n            layout={layout}\n            type={type}\n            connectNulls={connectNulls}\n            fill=\"none\"\n            points={points}\n          />\n        )}\n        {stroke !== 'none' && isRange && (\n          <Curve\n            {...filterProps(this.props, false)}\n            className=\"recharts-area-curve\"\n            layout={layout}\n            type={type}\n            connectNulls={connectNulls}\n            fill=\"none\"\n            points={baseLine as CurvePoint[]}\n          />\n        )}\n      </Layer>\n    );\n  }\n\n  renderAreaWithAnimation(needClip: boolean, clipPathId: string) {\n    const { points, baseLine, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } =\n      this.props;\n    const { prevPoints, prevBaseLine } = this.state;\n    // const clipPathId = isNil(id) ? this.id : id;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`area-${animationId}`}\n        onAnimationEnd={this.handleAnimationEnd}\n        onAnimationStart={this.handleAnimationStart}\n      >\n        {({ t }: { t: number }) => {\n          if (prevPoints) {\n            const prevPointsDiffFactor = prevPoints.length / points.length;\n            // update animtaion\n            const stepPoints = points.map((entry, index) => {\n              const prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n              if (prevPoints[prevPointIndex]) {\n                const prev = prevPoints[prevPointIndex];\n                const interpolatorX = interpolateNumber(prev.x, entry.x);\n                const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n                return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n              }\n\n              return entry;\n            });\n            let stepBaseLine;\n\n            if (isNumber(baseLine) && typeof baseLine === 'number') {\n              const interpolator = interpolateNumber(prevBaseLine as number, baseLine);\n              stepBaseLine = interpolator(t);\n            } else if (isNil(baseLine) || isNan(baseLine)) {\n              const interpolator = interpolateNumber(prevBaseLine as number, 0);\n              stepBaseLine = interpolator(t);\n            } else {\n              stepBaseLine = (baseLine as Coordinate[]).map((entry, index) => {\n                const prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n                if ((prevBaseLine as Coordinate[])[prevPointIndex]) {\n                  const prev = (prevBaseLine as Coordinate[])[prevPointIndex];\n                  const interpolatorX = interpolateNumber(prev.x, entry.x);\n                  const interpolatorY = interpolateNumber(prev.y, entry.y);\n\n                  return { ...entry, x: interpolatorX(t), y: interpolatorY(t) };\n                }\n\n                return entry;\n              });\n            }\n\n            return this.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n          }\n\n          return (\n            <Layer>\n              <defs>\n                <clipPath id={`animationClipPath-${clipPathId}`}>{this.renderClipRect(t)}</clipPath>\n              </defs>\n              <Layer clipPath={`url(#animationClipPath-${clipPathId})`}>\n                {this.renderAreaStatically(points, baseLine, needClip, clipPathId)}\n              </Layer>\n            </Layer>\n          );\n        }}\n      </Animate>\n    );\n  }\n\n  renderArea(needClip: boolean, clipPathId: string) {\n    const { points, baseLine, isAnimationActive } = this.props;\n    const { prevPoints, prevBaseLine, totalLength } = this.state;\n\n    if (\n      isAnimationActive &&\n      points &&\n      points.length &&\n      ((!prevPoints && totalLength > 0) || !isEqual(prevPoints, points) || !isEqual(prevBaseLine, baseLine))\n    ) {\n      return this.renderAreaWithAnimation(needClip, clipPathId);\n    }\n\n    return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n  }\n\n  render() {\n    const { hide, dot, points, className, top, left, xAxis, yAxis, width, height, isAnimationActive, id } = this.props;\n\n    if (hide || !points || !points.length) {\n      return null;\n    }\n\n    const { isAnimationFinished } = this.state;\n    const hasSinglePoint = points.length === 1;\n    const layerClass = clsx('recharts-area', className);\n    const needClipX = xAxis && xAxis.allowDataOverflow;\n    const needClipY = yAxis && yAxis.allowDataOverflow;\n    const needClip = needClipX || needClipY;\n    const clipPathId = isNil(id) ? this.id : id;\n    const { r = 3, strokeWidth = 2 } = filterProps(dot, false) ?? { r: 3, strokeWidth: 2 };\n    const { clipDot = true } = hasClipDot(dot) ? dot : {};\n    const dotSize = r * 2 + strokeWidth;\n\n    return (\n      <Layer className={layerClass}>\n        {needClipX || needClipY ? (\n          <defs>\n            <clipPath id={`clipPath-${clipPathId}`}>\n              <rect\n                x={needClipX ? left : left - width / 2}\n                y={needClipY ? top : top - height / 2}\n                width={needClipX ? width : width * 2}\n                height={needClipY ? height : height * 2}\n              />\n            </clipPath>\n            {!clipDot && (\n              <clipPath id={`clipPath-dots-${clipPathId}`}>\n                <rect x={left - dotSize / 2} y={top - dotSize / 2} width={width + dotSize} height={height + dotSize} />\n              </clipPath>\n            )}\n          </defs>\n        ) : null}\n        {!hasSinglePoint ? this.renderArea(needClip, clipPathId) : null}\n        {(dot || hasSinglePoint) && this.renderDots(needClip, clipDot, clipPathId)}\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Z Axis\n */\nimport React from 'react';\nimport { ScaleType, DataKey, AxisDomain } from '../util/types';\n\nexport interface Props {\n  type?: 'number' | 'category';\n  /** The name of data displayed in the axis */\n  name?: string | number;\n  /** The unit of data displayed in the axis */\n  unit?: string | number;\n  /** The unique id of z-axis */\n  zAxisId?: string | number;\n  /** The key of data displayed in the axis */\n  dataKey?: DataKey<any>;\n  /** The range of axis */\n  range?: number[];\n  scale?: ScaleType | Function;\n  /** The domain of scale in this axis */\n  domain?: AxisDomain;\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class ZAxis extends React.Component<Props> {\n  static displayName = 'ZAxis';\n\n  static defaultProps = {\n    zAxisId: 0,\n    range: [64, 64],\n    scale: 'auto',\n    type: 'number',\n  };\n\n  render(): React.ReactNode {\n    return null;\n  }\n}\n","import React from 'react';\nimport { ActiveShape, SymbolType } from './types';\nimport { ScatterPointItem } from '../cartesian/Scatter';\nimport { Symbols } from '../shape/Symbols';\nimport { Shape } from './ActiveShapeUtils';\n\nexport function ScatterSymbol({\n  option,\n  isActive,\n  ...props\n}: {\n  option: ActiveShape<ScatterPointItem> | SymbolType;\n  isActive: boolean;\n} & ScatterPointItem) {\n  if (typeof option === 'string') {\n    return <Shape option={<Symbols type={option} {...props} />} isActive={isActive} shapeType=\"symbols\" {...props} />;\n  }\n\n  return <Shape option={option} isActive={isActive} shapeType=\"symbols\" {...props} />;\n}\n","/**\n * @fileOverview Render a group of scatters\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport Animate from 'react-smooth';\n\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { ImplicitLabelListType, LabelList } from '../component/LabelList';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { ZAxis, Props as ZAxisProps } from './ZAxis';\nimport { Curve, Props as CurveProps, CurveType } from '../shape/Curve';\nimport { ErrorBar, Props as ErrorBarProps } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { uniqueId, interpolateNumber, getLinearRegression } from '../util/DataUtils';\nimport { getValueByDataKey, getCateCoordinateOfLine } from '../util/ChartUtils';\nimport {\n  LegendType,\n  AnimationTiming,\n  D3Scale,\n  ChartOffset,\n  DataKey,\n  TickItem,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n  AnimationDuration,\n  ActiveShape,\n  SymbolType,\n} from '../util/types';\nimport { TooltipType } from '../component/DefaultTooltipContent';\nimport { Props as XAxisProps } from './XAxis';\nimport { Props as YAxisProps } from './YAxis';\nimport { ScatterSymbol } from '../util/ScatterUtils';\nimport { InnerSymbolsProp } from '../shape/Symbols';\n\ninterface ScattterPointNode {\n  x?: number | string;\n  y?: number | string;\n  z?: number | string;\n}\n\nexport interface ScatterPointItem {\n  cx?: number;\n  cy?: number;\n  size?: number;\n  node?: ScattterPointNode;\n  payload?: any;\n}\n\nexport type ScatterCustomizedShape = ActiveShape<ScatterPointItem, SVGPathElement & InnerSymbolsProp> | SymbolType;\n\ninterface ScatterProps {\n  data?: any[];\n  xAxisId?: string | number;\n  yAxisId?: string | number;\n  zAxisId?: string | number;\n\n  left?: number;\n  top?: number;\n  width?: number;\n  height?: number;\n\n  xAxis?: Omit<XAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  yAxis?: Omit<YAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n  zAxis?: Omit<ZAxisProps, 'scale'> & { scale: D3Scale<string | number> };\n\n  dataKey?: DataKey<any>;\n\n  line?: ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | CurveProps | boolean;\n  lineType?: 'fitting' | 'joint';\n  lineJointType?: CurveType;\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  className?: string;\n  name?: string | number;\n\n  activeIndex?: number;\n  activeShape?: ScatterCustomizedShape;\n  shape?: ScatterCustomizedShape;\n  points?: ScatterPointItem[];\n  hide?: boolean;\n  label?: ImplicitLabelListType<any>;\n\n  isAnimationActive?: boolean;\n  animationId?: number;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n}\n\nexport type Props = PresentationAttributesAdaptChildEvent<any, SVGElement> & ScatterProps;\n\ninterface State {\n  isAnimationFinished?: boolean;\n  prevPoints?: ScatterPointItem[];\n  curPoints?: ScatterPointItem[];\n  prevAnimationId?: number;\n}\n\nexport class Scatter extends PureComponent<Props, State> {\n  static displayName = 'Scatter';\n\n  static defaultProps = {\n    xAxisId: 0,\n    yAxisId: 0,\n    zAxisId: 0,\n    legendType: 'circle',\n    lineType: 'joint',\n    lineJointType: 'linear',\n    data: [] as any[],\n    shape: 'circle',\n    hide: false,\n\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 0,\n    animationDuration: 400,\n    animationEasing: 'linear',\n  };\n\n  /**\n   * Compose the data of each group\n   * @param  {Object} xAxis   The configuration of x-axis\n   * @param  {Object} yAxis   The configuration of y-axis\n   * @param  {String} dataKey The unique key of a group\n   * @return {Array}  Composed data\n   */\n  static getComposedData = ({\n    xAxis,\n    yAxis,\n    zAxis,\n    item,\n    displayedData,\n    xAxisTicks,\n    yAxisTicks,\n    offset,\n  }: {\n    props: Props;\n    xAxis: Props['xAxis'];\n    yAxis: Props['yAxis'];\n    zAxis: Props['zAxis'];\n    xAxisTicks: TickItem[];\n    yAxisTicks: TickItem[];\n    item: Scatter;\n    bandSize: number;\n    displayedData: any[];\n    offset: ChartOffset;\n  }) => {\n    const { tooltipType } = item.props;\n    const cells = findAllByType(item.props.children, Cell);\n    const xAxisDataKey = isNil(xAxis.dataKey) ? item.props.dataKey : xAxis.dataKey;\n    const yAxisDataKey = isNil(yAxis.dataKey) ? item.props.dataKey : yAxis.dataKey;\n    const zAxisDataKey = zAxis && zAxis.dataKey;\n    const defaultRangeZ = zAxis ? zAxis.range : ZAxis.defaultProps.range;\n    const defaultZ = defaultRangeZ && defaultRangeZ[0];\n    const xBandSize = (xAxis.scale as any).bandwidth ? (xAxis.scale as any).bandwidth() : 0;\n    const yBandSize = (yAxis.scale as any).bandwidth ? (yAxis.scale as any).bandwidth() : 0;\n    const points = displayedData.map((entry, index) => {\n      const x = getValueByDataKey(entry, xAxisDataKey);\n      const y = getValueByDataKey(entry, yAxisDataKey);\n      const z = (!isNil(zAxisDataKey) && getValueByDataKey(entry, zAxisDataKey)) || '-';\n      const tooltipPayload = [\n        {\n          name: isNil(xAxis.dataKey) ? item.props.name : xAxis.name || xAxis.dataKey,\n          unit: xAxis.unit || '',\n          value: x,\n          payload: entry,\n          dataKey: xAxisDataKey,\n          type: tooltipType,\n        },\n        {\n          name: isNil(yAxis.dataKey) ? item.props.name : yAxis.name || yAxis.dataKey,\n          unit: yAxis.unit || '',\n          value: y,\n          payload: entry,\n          dataKey: yAxisDataKey,\n          type: tooltipType,\n        },\n      ];\n\n      if (z !== '-') {\n        tooltipPayload.push({\n          name: zAxis.name || zAxis.dataKey,\n          unit: zAxis.unit || '',\n          value: z,\n          payload: entry,\n          dataKey: zAxisDataKey,\n          type: tooltipType,\n        });\n      }\n      const cx = getCateCoordinateOfLine({\n        axis: xAxis,\n        ticks: xAxisTicks,\n        bandSize: xBandSize,\n        entry,\n        index,\n        dataKey: xAxisDataKey,\n      });\n      const cy = getCateCoordinateOfLine({\n        axis: yAxis,\n        ticks: yAxisTicks,\n        bandSize: yBandSize,\n        entry,\n        index,\n        dataKey: yAxisDataKey,\n      });\n      const size = z !== '-' ? zAxis.scale(z) : defaultZ;\n      const radius = Math.sqrt(Math.max(size, 0) / Math.PI);\n\n      return {\n        ...entry,\n        cx,\n        cy,\n        x: cx - radius,\n        y: cy - radius,\n        xAxis,\n        yAxis,\n        zAxis,\n        width: 2 * radius,\n        height: 2 * radius,\n        size,\n        node: { x, y, z },\n        tooltipPayload,\n        tooltipPosition: { x: cx, y: cy },\n        payload: entry,\n        ...(cells && cells[index] && cells[index].props),\n      };\n    });\n\n    return {\n      points,\n      ...offset,\n    };\n  };\n\n  state: State = { isAnimationFinished: false };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curPoints: nextProps.points,\n        prevPoints: prevState.curPoints,\n      };\n    }\n    if (nextProps.points !== prevState.curPoints) {\n      return {\n        curPoints: nextProps.points,\n      };\n    }\n\n    return null;\n  }\n\n  handleAnimationEnd = () => {\n    this.setState({ isAnimationFinished: true });\n  };\n\n  handleAnimationStart = () => {\n    this.setState({ isAnimationFinished: false });\n  };\n\n  id = uniqueId('recharts-scatter-');\n\n  renderSymbolsStatically(points: ScatterPointItem[]) {\n    const { shape, activeShape, activeIndex } = this.props;\n    const baseProps = filterProps(this.props, false);\n\n    return points.map((entry, i) => {\n      const isActive = activeIndex === i;\n      const option = isActive ? activeShape : shape;\n      const props = { ...baseProps, ...entry };\n\n      return (\n        <Layer\n          className=\"recharts-scatter-symbol\"\n          // eslint-disable-next-line react/no-array-index-key\n          key={`symbol-${entry?.cx}-${entry?.cy}-${entry?.size}-${i}`}\n          {...adaptEventsOfChild(this.props, entry, i)}\n          role=\"img\"\n        >\n          <ScatterSymbol\n            option={option}\n            isActive={isActive}\n            // eslint-disable-next-line react/no-array-index-key\n            key={`symbol-${i}`}\n            {...props}\n          />\n        </Layer>\n      );\n    });\n  }\n\n  renderSymbolsWithAnimation() {\n    const { points, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } = this.props;\n    const { prevPoints } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`pie-${animationId}`}\n        onAnimationEnd={this.handleAnimationEnd}\n        onAnimationStart={this.handleAnimationStart}\n      >\n        {({ t }: { t: number }) => {\n          const stepData = points.map((entry, index) => {\n            const prev = prevPoints && prevPoints[index];\n\n            if (prev) {\n              const interpolatorCx = interpolateNumber(prev.cx, entry.cx);\n              const interpolatorCy = interpolateNumber(prev.cy, entry.cy);\n              const interpolatorSize = interpolateNumber(prev.size, entry.size);\n\n              return {\n                ...entry,\n                cx: interpolatorCx(t),\n                cy: interpolatorCy(t),\n                size: interpolatorSize(t),\n              };\n            }\n\n            const interpolator = interpolateNumber(0, entry.size);\n\n            return { ...entry, size: interpolator(t) };\n          });\n\n          return <Layer>{this.renderSymbolsStatically(stepData)}</Layer>;\n        }}\n      </Animate>\n    );\n  }\n\n  renderSymbols() {\n    const { points, isAnimationActive } = this.props;\n    const { prevPoints } = this.state;\n\n    if (isAnimationActive && points && points.length && (!prevPoints || !isEqual(prevPoints, points))) {\n      return this.renderSymbolsWithAnimation();\n    }\n\n    return this.renderSymbolsStatically(points);\n  }\n\n  renderErrorBar() {\n    const { isAnimationActive } = this.props;\n    if (isAnimationActive && !this.state.isAnimationFinished) {\n      return null;\n    }\n\n    const { points, xAxis, yAxis, children } = this.props;\n    const errorBarItems = findAllByType(children, ErrorBar);\n\n    if (!errorBarItems) {\n      return null;\n    }\n\n    return errorBarItems.map((item: ReactElement<ErrorBarProps>, i: number) => {\n      const { direction, dataKey: errorDataKey } = item.props;\n      return React.cloneElement(item, {\n        key: `${direction}-${errorDataKey}-${points[i]}`,\n        data: points,\n        xAxis,\n        yAxis,\n        layout: direction === 'x' ? 'vertical' : 'horizontal',\n        dataPointFormatter: (dataPoint: ScatterPointItem, dataKey: Props['dataKey']) => {\n          return {\n            x: dataPoint.cx,\n            y: dataPoint.cy,\n            value: direction === 'x' ? +dataPoint.node.x : +dataPoint.node.y,\n            errorVal: getValueByDataKey(dataPoint, dataKey),\n          };\n        },\n      });\n    });\n  }\n\n  renderLine() {\n    const { points, line, lineType, lineJointType } = this.props;\n    const scatterProps = filterProps(this.props, false);\n    const customLineProps = filterProps(line, false);\n    let linePoints, lineItem;\n\n    if (lineType === 'joint') {\n      linePoints = points.map(entry => ({ x: entry.cx, y: entry.cy }));\n    } else if (lineType === 'fitting') {\n      const { xmin, xmax, a, b } = getLinearRegression(points);\n      const linearExp = (x: number) => a * x + b;\n      linePoints = [\n        { x: xmin, y: linearExp(xmin) },\n        { x: xmax, y: linearExp(xmax) },\n      ];\n    }\n    const lineProps = {\n      ...scatterProps,\n      fill: 'none',\n      stroke: scatterProps && scatterProps.fill,\n      ...customLineProps,\n      points: linePoints,\n    };\n\n    if (React.isValidElement(line)) {\n      lineItem = React.cloneElement(line as any, lineProps);\n    } else if (isFunction(line)) {\n      lineItem = line(lineProps);\n    } else {\n      lineItem = <Curve {...lineProps} type={lineJointType} />;\n    }\n\n    return (\n      <Layer className=\"recharts-scatter-line\" key=\"recharts-scatter-line\">\n        {lineItem}\n      </Layer>\n    );\n  }\n\n  render() {\n    const { hide, points, line, className, xAxis, yAxis, left, top, width, height, id, isAnimationActive } = this.props;\n    if (hide || !points || !points.length) {\n      return null;\n    }\n    const { isAnimationFinished } = this.state;\n    const layerClass = clsx('recharts-scatter', className);\n    const needClipX = xAxis && xAxis.allowDataOverflow;\n    const needClipY = yAxis && yAxis.allowDataOverflow;\n    const needClip = needClipX || needClipY;\n    const clipPathId = isNil(id) ? this.id : id;\n\n    return (\n      <Layer className={layerClass} clipPath={needClip ? `url(#clipPath-${clipPathId})` : null}>\n        {needClipX || needClipY ? (\n          <defs>\n            <clipPath id={`clipPath-${clipPathId}`}>\n              <rect\n                x={needClipX ? left : left - width / 2}\n                y={needClipY ? top : top - height / 2}\n                width={needClipX ? width : width * 2}\n                height={needClipY ? height : height * 2}\n              />\n            </clipPath>\n          </defs>\n        ) : null}\n        {line && this.renderLine()}\n        {this.renderErrorBar()}\n        <Layer key=\"recharts-scatter-symbols\">{this.renderSymbols()}</Layer>\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points)}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview X Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { BaseAxisProps, AxisInterval, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\ninterface XAxisProps extends BaseAxisProps {\n  /** The unique id of x-axis */\n  xAxisId?: string | number;\n  /** The width of axis which is usually calculated internally */\n  width?: number;\n  /** The height of axis, which need to be set by the user */\n  height?: number;\n  mirror?: boolean;\n  // The orientation of axis\n  orientation?: 'top' | 'bottom';\n  /**\n   * Ticks can be any type when the axis is the type of category\n   * Ticks must be numbers when the axis is the type of number\n   */\n  ticks?: (string | number)[];\n  padding?: { left?: number; right?: number } | 'gap' | 'no-gap';\n  minTickGap?: number;\n  interval?: AxisInterval;\n  reversed?: boolean;\n  /** the rotate angle of tick */\n  angle?: number;\n  tickMargin?: number;\n}\n\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGElement>, 'scale' | 'ref'> & XAxisProps;\n\nfunction XAxisImpl({ xAxisId }: Props) {\n  const width = useChartWidth();\n  const height = useChartHeight();\n  const axisOptions = useXAxisOrThrow(xAxisId);\n\n  if (axisOptions == null) {\n    return null;\n  }\n\n  return (\n    // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n    <CartesianAxis\n      {...axisOptions}\n      className={clsx(`recharts-${axisOptions.axisType} ${axisOptions.axisType}`, axisOptions.className)}\n      viewBox={{ x: 0, y: 0, width, height }}\n      ticksGenerator={(axis: any) => getTicksOfAxis(axis, true)}\n    />\n  );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class XAxis extends React.Component<Props> {\n  static displayName = 'XAxis';\n\n  static defaultProps = {\n    allowDecimals: true,\n    hide: false,\n    orientation: 'bottom',\n    width: 0,\n    height: 30,\n    mirror: false,\n    xAxisId: 0,\n    tickCount: 5,\n    type: 'category',\n    padding: { left: 0, right: 0 },\n    allowDataOverflow: false,\n    scale: 'auto',\n    reversed: false,\n    allowDuplicatedCategory: true,\n  };\n\n  render() {\n    return <XAxisImpl {...this.props} />;\n  }\n}\n","/**\n * @fileOverview Y Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { BaseAxisProps, AxisInterval, PresentationAttributesAdaptChildEvent } from '../util/types';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\ninterface YAxisProps extends BaseAxisProps {\n  /** The unique id of y-axis */\n  yAxisId?: string | number;\n  /**\n   * Ticks can be any type when the axis is the type of category\n   * Ticks must be numbers when the axis is the type of number\n   */\n  ticks?: (string | number)[];\n  /** The width of axis, which need to be set by the user */\n  width?: number;\n  /** The height of axis which is usually calculated in Chart */\n  height?: number;\n  mirror?: boolean;\n  /** The orientation of axis */\n  orientation?: 'left' | 'right';\n  padding?: {\n    top?: number;\n    bottom?: number;\n  };\n  minTickGap?: number;\n  interval?: AxisInterval;\n  reversed?: boolean;\n  tickMargin?: number;\n}\n\nexport type Props = Omit<PresentationAttributesAdaptChildEvent<any, SVGElement>, 'scale' | 'ref'> & YAxisProps;\n\nconst YAxisImpl = ({ yAxisId }: Props) => {\n  const width = useChartWidth();\n  const height = useChartHeight();\n  const axisOptions = useYAxisOrThrow(yAxisId);\n\n  if (axisOptions == null) {\n    return null;\n  }\n\n  return (\n    // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n    <CartesianAxis\n      {...axisOptions}\n      className={clsx(`recharts-${axisOptions.axisType} ${axisOptions.axisType}`, axisOptions.className)}\n      viewBox={{ x: 0, y: 0, width, height }}\n      ticksGenerator={(axis: any) => getTicksOfAxis(axis, true)}\n    />\n  );\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport class YAxis extends React.Component<Props> {\n  static displayName = 'YAxis';\n\n  static defaultProps = {\n    allowDuplicatedCategory: true,\n    allowDecimals: true,\n    hide: false,\n    orientation: 'left',\n    width: 60,\n    height: 0,\n    mirror: false,\n    yAxisId: 0,\n    tickCount: 5,\n    type: 'number',\n    padding: { top: 0, bottom: 0 },\n    allowDataOverflow: false,\n    scale: 'auto',\n    reversed: false,\n  };\n\n  render() {\n    return <YAxisImpl {...this.props} />;\n  }\n}\n","import { ReactNode } from 'react';\nimport { 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';\n\nexport const detectReferenceElementsDomain = (\n  children: ReactNode[],\n  domain: number[],\n  axisId: string,\n  axisType: string,\n  specifiedTicks?: any[],\n) => {\n  const lines = findAllByType(children, ReferenceLine);\n  const dots = findAllByType(children, ReferenceDot);\n  const elements = [...lines, ...dots];\n  const areas = findAllByType(children, ReferenceArea);\n  const idKey = `${axisType}Id`;\n  const valueKey = axisType[0];\n  let finalDomain = domain;\n\n  if (elements.length) {\n    finalDomain = elements.reduce((result: number[], el: any) => {\n      if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n        const value = el.props[valueKey];\n\n        return [Math.min(result[0], value), Math.max(result[1], value)];\n      }\n      return result;\n    }, finalDomain);\n  }\n\n  if (areas.length) {\n    const key1 = `${valueKey}1`;\n    const key2 = `${valueKey}2`;\n\n    finalDomain = areas.reduce((result: number[], el: any) => {\n      if (\n        el.props[idKey] === axisId &&\n        ifOverflowMatches(el.props, 'extendDomain') &&\n        isNumber(el.props[key1]) &&\n        isNumber(el.props[key2])\n      ) {\n        const value1 = el.props[key1];\n        const value2 = el.props[key2];\n\n        return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n      }\n      return result;\n    }, finalDomain);\n  }\n\n  if (specifiedTicks && specifiedTicks.length) {\n    finalDomain = specifiedTicks.reduce((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};\n","import EventEmitter from 'eventemitter3';\nimport { CategoricalChartState } from '../chart/types';\n\nconst eventCenter: EventEmitter<EventTypes> = new EventEmitter();\n\nexport { eventCenter };\nexport const SYNC_EVENT = 'recharts.syncMouseEvents';\n\ninterface EventTypes {\n  [SYNC_EVENT](syncId: number | string, data: CategoricalChartState, emitter: Symbol): void;\n}\n","import type { LayoutType, TickItem } from '../util/types';\n\ninterface ContainerOffset {\n  top: number;\n  left: number;\n}\n\ninterface InitiableOptions {\n  coordinateList?: TickItem[];\n  mouseHandlerCallback?: (e: Partial<MouseEvent>) => void;\n  container?: HTMLElement;\n  layout?: LayoutType;\n  offset?: ContainerOffset;\n}\n\nexport class AccessibilityManager {\n  private activeIndex = 0;\n\n  private coordinateList: InitiableOptions['coordinateList'] = [];\n\n  private mouseHandlerCallback: InitiableOptions['mouseHandlerCallback'];\n\n  private container: InitiableOptions['container'];\n\n  private layout: InitiableOptions['layout'] = 'horizontal';\n\n  private offset: InitiableOptions['offset'];\n\n  public setDetails({\n    coordinateList = null,\n    container = null,\n    layout = null,\n    offset = null,\n    mouseHandlerCallback = null,\n  }: InitiableOptions) {\n    this.coordinateList = coordinateList ?? this.coordinateList ?? [];\n    this.container = container ?? this.container;\n    this.layout = layout ?? this.layout;\n    this.offset = offset ?? this.offset;\n    this.mouseHandlerCallback = mouseHandlerCallback ?? this.mouseHandlerCallback;\n\n    // Keep activeIndex in the bounds between 0 and the last coordinate index\n    this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n  }\n\n  public focus() {\n    this.spoofMouse();\n  }\n\n  public keyboardEvent(e: any) {\n    // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n    // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n    // if there are no tooltips, since that will cause unexpected behavior of users.\n    if (this.coordinateList.length === 0) {\n      return;\n    }\n\n    switch (e.key) {\n      case 'ArrowRight': {\n        if (this.layout !== 'horizontal') {\n          return;\n        }\n        this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n        this.spoofMouse();\n        break;\n      }\n      case 'ArrowLeft': {\n        if (this.layout !== 'horizontal') {\n          return;\n        }\n        this.activeIndex = Math.max(this.activeIndex - 1, 0);\n        this.spoofMouse();\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n  }\n\n  public setIndex(newIndex: number) {\n    this.activeIndex = newIndex;\n  }\n\n  private spoofMouse() {\n    if (this.layout !== 'horizontal') {\n      return;\n    }\n\n    // This can happen when the tooltips suddenly stop existing as children of the component\n    // That update doesn't otherwise fire events, so we have to double check here.\n    if (this.coordinateList.length === 0) {\n      return;\n    }\n\n    const { x, y, height } = this.container.getBoundingClientRect();\n    const { coordinate } = this.coordinateList[this.activeIndex];\n\n    const scrollOffsetX = window?.scrollX || 0;\n    const scrollOffsetY = window?.scrollY || 0;\n\n    const pageX = x + coordinate + scrollOffsetX;\n    const pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n\n    this.mouseHandlerCallback({ pageX, pageY });\n  }\n}\n","import { polarToCartesian } from '../PolarUtils';\nimport { ChartCoordinate, Coordinate } from '../types';\n\nexport type RadialCursorPoints = {\n  points: [startPoint: Coordinate, endPoint: Coordinate];\n  cx?: number;\n  cy?: number;\n  radius?: number;\n  startAngle?: number;\n  endAngle?: number;\n};\n\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate: ChartCoordinate): RadialCursorPoints {\n  const { cx, cy, radius, startAngle, endAngle } = activeCoordinate;\n  const startPoint = polarToCartesian(cx, cy, radius, startAngle);\n  const endPoint = polarToCartesian(cx, cy, radius, endAngle);\n\n  return {\n    points: [startPoint, endPoint],\n    cx,\n    cy,\n    radius,\n    startAngle,\n    endAngle,\n  };\n}\n","import { polarToCartesian } from '../PolarUtils';\nimport { ChartCoordinate, Coordinate, ChartOffset, LayoutType } from '../types';\nimport { RadialCursorPoints, getRadialCursorPoints } from './getRadialCursorPoints';\n\nexport function getCursorPoints(\n  layout: LayoutType,\n  activeCoordinate: ChartCoordinate,\n  offset: ChartOffset,\n): [Coordinate, Coordinate] | RadialCursorPoints {\n  let 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 (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n    if (layout === 'centric') {\n      const { cx, cy, innerRadius, outerRadius, angle } = activeCoordinate;\n      const innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n      const 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      return getRadialCursorPoints(activeCoordinate);\n    }\n  }\n\n  return [\n    { x: x1, y: y1 },\n    { x: x2, y: y2 },\n  ];\n}\n","import React, { ReactElement, cloneElement, createElement, isValidElement } from 'react';\nimport clsx from 'clsx';\nimport { ChartCoordinate, ChartOffset, LayoutType, TooltipEventType } from '../util/types';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { getCursorRectangle } from '../util/cursor/getCursorRectangle';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';\nimport { Sector } from '../shape/Sector';\nimport { getCursorPoints } from '../util/cursor/getCursorPoints';\nimport { filterProps } from '../util/ReactUtils';\n\nexport type CursorProps = {\n  activeCoordinate: ChartCoordinate;\n  activePayload: any[];\n  activeTooltipIndex: number;\n  chartName: string;\n  element: ReactElement;\n  isActive: boolean;\n  layout: LayoutType;\n  offset: ChartOffset;\n  tooltipAxisBandSize: number;\n  tooltipEventType: TooltipEventType;\n};\n\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */\nexport function Cursor(props: CursorProps) {\n  const {\n    element,\n    tooltipEventType,\n    isActive,\n    activeCoordinate,\n    activePayload,\n    offset,\n    activeTooltipIndex,\n    tooltipAxisBandSize,\n    layout,\n    chartName,\n  } = props;\n  const elementPropsCursor = element.props.cursor ?? (element.type as any).defaultProps?.cursor;\n  if (\n    !element ||\n    !elementPropsCursor ||\n    !isActive ||\n    !activeCoordinate ||\n    (chartName !== 'ScatterChart' && tooltipEventType !== 'axis')\n  ) {\n    return null;\n  }\n  let restProps;\n  let cursorComp: React.ComponentType<any> = Curve;\n\n  if (chartName === 'ScatterChart') {\n    restProps = activeCoordinate;\n    cursorComp = Cross;\n  } else if (chartName === 'BarChart') {\n    restProps = getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize);\n    cursorComp = Rectangle;\n  } else if (layout === 'radial') {\n    const { cx, cy, radius, startAngle, endAngle } = getRadialCursorPoints(activeCoordinate);\n    restProps = {\n      cx,\n      cy,\n      startAngle,\n      endAngle,\n      innerRadius: radius,\n      outerRadius: radius,\n    };\n    cursorComp = Sector;\n  } else {\n    restProps = { points: getCursorPoints(layout, activeCoordinate, offset) };\n    cursorComp = Curve;\n  }\n\n  const cursorProps = {\n    stroke: '#ccc',\n    pointerEvents: 'none',\n    ...offset,\n    ...restProps,\n    ...filterProps(elementPropsCursor, false),\n    payload: activePayload,\n    payloadIndex: activeTooltipIndex,\n    className: clsx('recharts-tooltip-cursor', elementPropsCursor.className),\n  };\n\n  return isValidElement(elementPropsCursor)\n    ? cloneElement(elementPropsCursor, cursorProps)\n    : createElement(cursorComp, cursorProps);\n}\n","import { ChartCoordinate, ChartOffset, LayoutType } from '../types';\n\nexport type CursorRectangle = {\n  stroke: string;\n  fill: string;\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n};\n\nexport function getCursorRectangle(\n  layout: LayoutType,\n  activeCoordinate: ChartCoordinate,\n  offset: ChartOffset,\n  tooltipAxisBandSize: number,\n): CursorRectangle {\n  const halfSize = tooltipAxisBandSize / 2;\n\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","import React, { Component, cloneElement, isValidElement, ReactElement, forwardRef } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport get from 'lodash/get';\nimport sortBy from 'lodash/sortBy';\nimport throttle from 'lodash/throttle';\n\nimport clsx from 'clsx';\n// eslint-disable-next-line no-restricted-imports\nimport type { DebouncedFunc } from 'lodash';\nimport invariant from 'tiny-invariant';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle } from '../shape/Rectangle';\n\nimport {\n  filterProps,\n  findAllByType,\n  findChildByType,\n  getDisplayName,\n  getReactEventByType,\n  isChildrenEqual,\n  parseChildIndex,\n  renderByOrder,\n  validateWidthHeight,\n} from '../util/ReactUtils';\n\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset } from '../util/DOMUtils';\nimport { findEntryInArray, getAnyElementOfObject, hasDuplicate, isNumber, uniqueId } from '../util/DataUtils';\nimport {\n  appendOffsetOfLegend,\n  AxisStackGroups,\n  BarPosition,\n  calculateActiveTickIndex,\n  combineEventHandlers,\n  getBandSizeOfAxis,\n  getBarPosition,\n  getBarSizeList,\n  getDomainOfDataByKey,\n  getDomainOfItemsWithSameAxis,\n  getDomainOfStackGroups,\n  getLegendProps,\n  getMainColorOfGraphicItem,\n  getStackedDataOfItem,\n  getStackGroupsByAxisId,\n  getTicksOfAxis,\n  getTooltipItem,\n  isCategoricalAxis,\n  parseDomainOfCategoryAxis,\n  parseErrorBarsOfAxis,\n  parseSpecifiedDomain,\n} 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 {\n  adaptEventHandlers,\n  AxisType,\n  BaseAxisProps,\n  CartesianViewBox,\n  CategoricalChartOptions,\n  ChartCoordinate,\n  ChartOffset,\n  Coordinate,\n  DataKey,\n  GeometrySector,\n  LayoutType,\n  Margin,\n  StackOffsetType,\n  TickItem,\n  TooltipEventType,\n  XAxisMap,\n  YAxisMap,\n} from '../util/types';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { isDomainSpecifiedByUser } from '../util/isDomainSpecifiedByUser';\nimport { getActiveShapeIndexForTooltip, isFunnel, isPie, isScatter } from '../util/ActiveShapeUtils';\nimport { Cursor } from '../component/Cursor';\nimport { ChartLayoutContextProvider } from '../context/chartLayoutContext';\nimport { AxisMap, CategoricalChartState } from './types';\nimport { XAxisProps, YAxisProps, ZAxisProps } from '../index';\nimport { AngleAxisProps, RadiusAxisProps } from '../polar/types';\n\nexport interface MousePointer {\n  pageX: number;\n  pageY: number;\n}\n\nexport type GraphicalItem<Props = Record<string, any>> = ReactElement<\n  Props,\n  string | React.JSXElementConstructor<Props>\n> & {\n  item: ReactElement<Props, string | React.JSXElementConstructor<Props>>;\n};\n\nconst ORIENT_MAP = {\n  xAxis: ['bottom', 'top'],\n  yAxis: ['left', 'right'],\n};\n\nconst FULL_WIDTH_AND_HEIGHT = { width: '100%', height: '100%' };\n\nconst originCoordinate: Coordinate = { x: 0, y: 0 };\n\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */\nfunction renderAsIs(element: React.ReactElement): React.ReactElement {\n  return element;\n}\n\nconst calculateTooltipPos = (rangeObj: any, layout: LayoutType): any => {\n  if (layout === 'horizontal') {\n    return rangeObj.x;\n  }\n  if (layout === 'vertical') {\n    return rangeObj.y;\n  }\n  if (layout === 'centric') {\n    return rangeObj.angle;\n  }\n\n  return rangeObj.radius;\n};\n\nconst getActiveCoordinate = (\n  layout: LayoutType,\n  tooltipTicks: TickItem[],\n  activeIndex: number,\n  rangeObj: any,\n): ChartCoordinate => {\n  const entry = tooltipTicks.find(tick => tick && tick.index === activeIndex);\n\n  if (entry) {\n    if (layout === 'horizontal') {\n      return { x: entry.coordinate, y: rangeObj.y };\n    }\n    if (layout === 'vertical') {\n      return { x: rangeObj.x, y: entry.coordinate };\n    }\n    if (layout === 'centric') {\n      const angle = entry.coordinate;\n      const { radius } = rangeObj;\n\n      return {\n        ...rangeObj,\n        ...polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle),\n        angle,\n        radius,\n      };\n    }\n\n    const radius = entry.coordinate;\n    const { angle } = rangeObj;\n\n    return {\n      ...rangeObj,\n      ...polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle),\n      angle,\n      radius,\n    };\n  }\n\n  return originCoordinate;\n};\n\nconst getDisplayedData = (\n  data: any[],\n  {\n    graphicalItems,\n    dataStartIndex,\n    dataEndIndex,\n  }: Pick<CategoricalChartState, 'graphicalItems' | 'dataStartIndex' | 'dataEndIndex'>,\n): any[] => {\n  const itemsData = (graphicalItems ?? []).reduce<any[]>((result, child) => {\n    const itemData = child.props.data;\n\n    if (itemData && itemData.length) {\n      return [...result, ...itemData];\n    }\n\n    return result;\n  }, []);\n  if (itemsData.length > 0) {\n    return itemsData;\n  }\n\n  if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n    return data.slice(dataStartIndex, dataEndIndex + 1);\n  }\n\n  return [];\n};\n\nfunction getDefaultDomainByAxisType(axisType: 'number' | string) {\n  return axisType === 'number' ? [0, 'auto'] : undefined;\n}\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 */\nconst getTooltipContent = (\n  state: CategoricalChartState,\n  chartData: any[],\n  activeIndex: number,\n  activeLabel?: string,\n): any[] => {\n  const { graphicalItems, tooltipAxis } = state;\n  const displayedData = getDisplayedData(chartData, state);\n\n  if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n    return null;\n  }\n  // get data by activeIndex when the axis don't allow duplicated category\n  return graphicalItems.reduce((result, child) => {\n    /**\n     * Fixes: https://github.com/recharts/recharts/issues/3669\n     * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n     * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n     */\n    let data = child.props.data ?? chartData;\n\n    if (\n      data &&\n      state.dataStartIndex + state.dataEndIndex !== 0 &&\n      // https://github.com/recharts/recharts/issues/4717\n      // The data is sliced only when the active index is within the start/end index range.\n      state.dataEndIndex - state.dataStartIndex >= activeIndex\n    ) {\n      data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n    }\n\n    let payload;\n\n    if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n      // graphic child has data props\n      const 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 [...result, getTooltipItem(child, payload)];\n  }, []);\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 */\nconst getTooltipData = (state: CategoricalChartState, chartData: any[], layout: LayoutType, rangeObj?: any) => {\n  const rangeData = rangeObj || { x: state.chartX, y: state.chartY };\n\n  const pos = calculateTooltipPos(rangeData, layout);\n  const { orderedTooltipTicks: ticks, tooltipAxis: axis, tooltipTicks } = state;\n\n  const activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n  if (activeIndex >= 0 && tooltipTicks) {\n    const activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n    const activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n    const activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n\n    return {\n      activeTooltipIndex: activeIndex,\n      activeLabel,\n      activePayload,\n      activeCoordinate,\n    };\n  }\n\n  return null;\n};\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 */\nexport const getAxisMapByAxes = (\n  props: CategoricalChartProps,\n  {\n    axes,\n    graphicalItems,\n    axisType,\n    axisIdKey,\n    stackGroups,\n    dataStartIndex,\n    dataEndIndex,\n  }: {\n    axes: ReadonlyArray<ReactElement>;\n    graphicalItems: ReadonlyArray<ReactElement>;\n    axisType: AxisType;\n    axisIdKey: string;\n    stackGroups: AxisStackGroups;\n    dataStartIndex: number;\n    dataEndIndex: number;\n  },\n): AxisMap => {\n  const { layout, children, stackOffset } = props;\n  const isCategorical = isCategoricalAxis(layout, axisType);\n\n  // Eliminate duplicated axes\n  return axes.reduce((result: AxisMap, child: ReactElement): AxisMap => {\n    const childProps =\n      (child.type as any).defaultProps !== undefined\n        ? { ...(child.type as any).defaultProps, ...child.props }\n        : child.props;\n    const { type, dataKey, allowDataOverflow, allowDuplicatedCategory, scale, ticks, includeHidden } = childProps;\n    const axisId = childProps[axisIdKey];\n\n    if (result[axisId]) {\n      return result;\n    }\n\n    const displayedData = getDisplayedData(props.data, {\n      graphicalItems: graphicalItems.filter(item => {\n        const itemAxisId =\n          axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps?.[axisIdKey];\n        return itemAxisId === axisId;\n      }),\n      dataStartIndex,\n      dataEndIndex,\n    });\n    const len = displayedData.length;\n\n    let domain, duplicateDomain, categoricalDomain;\n\n    /*\n     * This is a hack to short-circuit the domain creation here to enhance performance.\n     * Usually, the data is used to determine the domain, but when the user specifies\n     * a domain upfront (via props), there is no need to calculate the domain start and end,\n     * which is very expensive for a larger amount of data.\n     * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n     * because the axis is supposed to ignore the specified domain that way.\n     */\n    if (isDomainSpecifiedByUser(childProps.domain, allowDataOverflow, type)) {\n      domain = parseSpecifiedDomain(childProps.domain, null, allowDataOverflow);\n      /* The chart can be categorical and have the domain specified in numbers\n       * we still need to calculate the categorical domain\n       * TODO: refactor this more\n       */\n      if (isCategorical && (type === 'number' || scale !== 'auto')) {\n        categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n      }\n    }\n\n    // if the domain is defaulted we need this for `originalDomain` as well\n    const defaultDomain = getDefaultDomainByAxisType(type);\n\n    // we didn't create the domain from user's props above, so we need to calculate it\n    if (!domain || domain.length === 0) {\n      const childDomain = childProps.domain ?? defaultDomain;\n\n      if (dataKey) {\n        // has dataKey in <Axis />\n        domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n        if (type === 'category' && isCategorical) {\n          // the field type is category data and this axis is categorical axis\n          const duplicate = hasDuplicate(domain);\n\n          if (allowDuplicatedCategory && duplicate) {\n            duplicateDomain = domain;\n            // When category axis has duplicated text, serial numbers are used to generate scale\n            domain = range(0, len);\n          } else if (!allowDuplicatedCategory) {\n            // remove duplicated category\n            domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(\n              (finalDomain: any, entry: any) =>\n                finalDomain.indexOf(entry) >= 0 ? finalDomain : [...finalDomain, entry],\n              [],\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(childDomain, domain, child).reduce(\n              (finalDomain: any, entry: any) =>\n                finalDomain.indexOf(entry) >= 0 || entry === '' || isNil(entry) ? finalDomain : [...finalDomain, entry],\n              [],\n            );\n          } else {\n            // eliminate undefined or null or empty string\n            domain = domain.filter((entry: any) => entry !== '' && !isNil(entry));\n          }\n        } else if (type === 'number') {\n          // the field type is numerical\n          const errorBarsDomain = parseErrorBarsOfAxis(\n            displayedData,\n            graphicalItems.filter(item => {\n              const itemAxisId =\n                axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps?.[axisIdKey];\n              const itemHide = 'hide' in item.props ? item.props.hide : (item.type as any).defaultProps?.hide;\n              return itemAxisId === axisId && (includeHidden || !itemHide);\n            }),\n            dataKey,\n            axisType,\n            layout,\n          );\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 =\n          stackOffset === 'expand'\n            ? [0, 1]\n            : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n      } else {\n        domain = getDomainOfItemsWithSameAxis(\n          displayedData,\n          graphicalItems.filter(item => {\n            const itemAxisId =\n              axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps[axisIdKey];\n            const itemHide = 'hide' in item.props ? item.props.hide : (item.type as any).defaultProps.hide;\n            return itemAxisId === axisId && (includeHidden || !itemHide);\n          }),\n          type,\n          layout,\n          true,\n        );\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 (childDomain) {\n          domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n        }\n      } else if (type === 'category' && childDomain) {\n        const axisDomain = childDomain;\n        const isDomainValid = domain.every((entry: string | number) => axisDomain.indexOf(entry) >= 0);\n\n        if (isDomainValid) {\n          domain = axisDomain;\n        }\n      }\n    }\n\n    return {\n      ...result,\n      [axisId]: {\n        ...childProps,\n        axisType,\n        domain,\n        categoricalDomain,\n        duplicateDomain,\n        originalDomain: childProps.domain ?? defaultDomain,\n        isCategorical,\n        layout,\n      },\n    };\n  }, {});\n};\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 */\nconst getAxisMapByItems = (\n  props: CategoricalChartProps,\n  {\n    graphicalItems,\n    Axis,\n    axisType,\n    axisIdKey,\n    stackGroups,\n    dataStartIndex,\n    dataEndIndex,\n  }: {\n    axisIdKey: string;\n    axisType?: AxisType;\n    Axis?: React.ComponentType<BaseAxisProps>;\n    graphicalItems: ReadonlyArray<ReactElement>;\n    stackGroups: AxisStackGroups;\n    dataStartIndex: number;\n    dataEndIndex: number;\n  },\n): AxisMap => {\n  const { layout, children } = props;\n  const displayedData = getDisplayedData(props.data, {\n    graphicalItems,\n    dataStartIndex,\n    dataEndIndex,\n  });\n  const len = displayedData.length;\n  const isCategorical = isCategoricalAxis(layout, axisType);\n  let index = -1;\n\n  // 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  return graphicalItems.reduce((result: AxisMap, child: ReactElement): AxisMap => {\n    const childProps =\n      (child.type as any).defaultProps !== undefined\n        ? { ...(child.type as any).defaultProps, ...child.props }\n        : child.props;\n    const axisId = childProps[axisIdKey];\n\n    const originalDomain = getDefaultDomainByAxisType('number');\n\n    if (!result[axisId]) {\n      index++;\n      let 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(\n          originalDomain,\n          getDomainOfItemsWithSameAxis(\n            displayedData,\n            graphicalItems.filter((item: ReactElement) => {\n              const itemAxisId =\n                axisIdKey in item.props ? item.props[axisIdKey] : (item.type as any).defaultProps?.[axisIdKey];\n              const itemHide = 'hide' in item.props ? item.props.hide : (item.type as any).defaultProps?.hide;\n              return itemAxisId === axisId && !itemHide;\n            }),\n            'number',\n            layout,\n          ),\n          Axis.defaultProps.allowDataOverflow,\n        );\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n      }\n\n      return {\n        ...result,\n        [axisId]: {\n          axisType,\n          ...Axis.defaultProps,\n          hide: true,\n          orientation: get(ORIENT_MAP, `${axisType}.${index % 2}`, null),\n          domain,\n          originalDomain,\n          isCategorical,\n          layout,\n          // specify scale when no Axis\n          // scale: isCategorical ? 'band' : 'linear',\n        },\n      };\n    }\n\n    return result;\n  }, {});\n};\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  {React.ComponentType}  [AxisComp]      Axis Component\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 */\nconst getAxisMap = (\n  props: CategoricalChartProps,\n  {\n    axisType = 'xAxis',\n    AxisComp,\n    graphicalItems,\n    stackGroups,\n    dataStartIndex,\n    dataEndIndex,\n  }: {\n    axisType?: AxisType;\n    AxisComp?: React.ComponentType;\n    graphicalItems: ReadonlyArray<ReactElement>;\n    stackGroups: AxisStackGroups;\n    dataStartIndex: number;\n    dataEndIndex: number;\n  },\n): AxisMap => {\n  const { children } = props;\n  const axisIdKey = `${axisType}Id`;\n  // Get all the instance of Axis\n  const axes = findAllByType(children, AxisComp);\n\n  let axisMap: AxisMap = {};\n\n  if (axes && axes.length) {\n    axisMap = getAxisMapByAxes(props, {\n      axes,\n      graphicalItems,\n      axisType,\n      axisIdKey,\n      stackGroups,\n      dataStartIndex,\n      dataEndIndex,\n    });\n  } else if (graphicalItems && graphicalItems.length) {\n    axisMap = getAxisMapByItems(props, {\n      Axis: AxisComp,\n      graphicalItems,\n      axisType,\n      axisIdKey,\n      stackGroups,\n      dataStartIndex,\n      dataEndIndex,\n    });\n  }\n\n  return axisMap;\n};\n\nconst tooltipTicksGenerator = (axisMap: AxisMap) => {\n  const axis: BaseAxisProps = getAnyElementOfObject(axisMap);\n  const tooltipTicks = getTicksOfAxis(axis, false, true);\n\n  return {\n    tooltipTicks,\n    orderedTooltipTicks: sortBy(tooltipTicks, o => o.coordinate),\n    tooltipAxis: axis,\n    tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks),\n  };\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 */\nexport const createDefaultState = (props: CategoricalChartProps): CategoricalChartState => {\n  const { children, defaultShowTooltip } = props;\n  const brushItem = findChildByType(children, Brush);\n  let startIndex = 0;\n  let endIndex = 0;\n\n  if (props.data && props.data.length !== 0) {\n    endIndex = props.data.length - 1;\n  }\n\n  if (brushItem && brushItem.props) {\n    if (brushItem.props.startIndex >= 0) {\n      startIndex = brushItem.props.startIndex;\n    }\n    if (brushItem.props.endIndex >= 0) {\n      endIndex = brushItem.props.endIndex;\n    }\n  }\n\n  return {\n    chartX: 0,\n    chartY: 0,\n    dataStartIndex: startIndex,\n    dataEndIndex: endIndex,\n    activeTooltipIndex: -1,\n    isTooltipActive: Boolean(defaultShowTooltip),\n  };\n};\n\nconst hasGraphicalBarItem = (graphicalItems: ReadonlyArray<ReactElement>): boolean => {\n  if (!graphicalItems || !graphicalItems.length) {\n    return false;\n  }\n\n  return graphicalItems.some(item => {\n    const name = getDisplayName(item && item.type);\n\n    return name && name.indexOf('Bar') >= 0;\n  });\n};\n\nconst getAxisNameByLayout = (layout: LayoutType) => {\n  if (layout === 'horizontal') {\n    return { numericAxisName: 'yAxis', cateAxisName: 'xAxis' } as const;\n  }\n  if (layout === 'vertical') {\n    return { numericAxisName: 'xAxis', cateAxisName: 'yAxis' } as const;\n  }\n  if (layout === 'centric') {\n    return { numericAxisName: 'radiusAxis', cateAxisName: 'angleAxis' } as const;\n  }\n\n  return { numericAxisName: 'angleAxis', cateAxisName: 'radiusAxis' } as const;\n};\n\n/**\n * Calculate the offset of main part in the svg element\n * @param  {Object} params.props          Latest props\n * @param  {Array}  params.graphicalItems The instances of item\n * @param  {Object} params.xAxisMap       The configuration of x-axis\n * @param  {Object} params.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 */\nconst calculateOffset = (\n  {\n    props,\n    graphicalItems,\n    xAxisMap = {},\n    yAxisMap = {},\n  }: {\n    props: CategoricalChartProps;\n    graphicalItems: Array<ReactElement>;\n    xAxisMap?: XAxisMap;\n    yAxisMap?: YAxisMap;\n  },\n  prevLegendBBox?: DOMRect | null,\n): ChartOffset => {\n  const { width, height, children } = props;\n  const margin = props.margin || {};\n  const brushItem = findChildByType(children, Brush);\n  const legendItem = findChildByType(children, Legend);\n\n  const offsetH = Object.keys(yAxisMap).reduce(\n    (result, id) => {\n      const entry = yAxisMap[id];\n      const { orientation } = entry;\n\n      if (!entry.mirror && !entry.hide) {\n        return { ...result, [orientation]: result[orientation] + entry.width };\n      }\n\n      return result;\n    },\n    { left: margin.left || 0, right: margin.right || 0 },\n  );\n\n  const offsetV = Object.keys(xAxisMap).reduce(\n    (result, id) => {\n      const entry = xAxisMap[id];\n      const { orientation } = entry;\n\n      if (!entry.mirror && !entry.hide) {\n        return { ...result, [orientation]: get(result, `${orientation}`) + entry.height };\n      }\n\n      return result;\n    },\n    { top: margin.top || 0, bottom: margin.bottom || 0 },\n  );\n\n  let offset: ChartOffset = { ...offsetV, ...offsetH };\n\n  const brushBottom = offset.bottom;\n\n  if (brushItem) {\n    offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n  }\n\n  if (legendItem && prevLegendBBox) {\n    // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n    offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n  }\n\n  const offsetWidth = width - offset.left - offset.right;\n  const offsetHeight = height - offset.top - offset.bottom;\n\n  return {\n    brushBottom,\n    ...offset,\n    // never return negative values for height and width\n    width: Math.max(offsetWidth, 0),\n    height: Math.max(offsetHeight, 0),\n  };\n};\n\ntype AxisMapMap = {\n  [axisMapId: string]: AxisMap;\n};\n\nexport type CategoricalChartFunc = (nextState: CategoricalChartState, event: any) => void;\n\nexport interface CategoricalChartProps {\n  syncId?: number | string;\n  syncMethod?: 'index' | 'value' | Function;\n  compact?: boolean;\n  width?: number;\n  height?: number;\n  dataKey?: DataKey<any>;\n  data?: any[];\n  layout?: LayoutType;\n  stackOffset?: StackOffsetType;\n  throttleDelay?: number;\n  margin?: Margin;\n  barCategoryGap?: number | string;\n  barGap?: number | string;\n  barSize?: number | string;\n  maxBarSize?: number;\n  style?: any;\n  className?: string;\n  children?: any;\n  defaultShowTooltip?: boolean;\n  onClick?: CategoricalChartFunc;\n  onMouseLeave?: CategoricalChartFunc;\n  onMouseEnter?: CategoricalChartFunc;\n  onMouseMove?: CategoricalChartFunc;\n  onMouseDown?: CategoricalChartFunc;\n  onMouseUp?: CategoricalChartFunc;\n  onContextMenu?: CategoricalChartFunc;\n  onDoubleClick?: CategoricalChartFunc;\n  reverseStackOrder?: boolean;\n  id?: string;\n\n  startAngle?: number;\n  endAngle?: number;\n  cx?: number | string;\n  cy?: number | string;\n  innerRadius?: number | string;\n  outerRadius?: number | string;\n  title?: string;\n  desc?: string;\n  accessibilityLayer?: boolean;\n  role?: string;\n  tabIndex?: number;\n}\n\ntype AxisObj = {\n  xAxis?: XAxisProps;\n  xAxisTicks?: Array<TickItem>;\n\n  yAxis?: YAxisProps;\n  yAxisTicks?: Array<TickItem>;\n\n  zAxis?: ZAxisProps;\n  zAxisTicks?: Array<TickItem>;\n\n  angleAxis?: AngleAxisProps;\n  angleAxisTicks?: Array<TickItem>;\n\n  radiusAxis?: RadiusAxisProps;\n  radiusAxisTicks?: Array<TickItem>;\n};\n\n// Determine the size of the axis, used for calculation of relative bar sizes\nconst getCartesianAxisSize = (axisObj: AxisObj, axisName: 'xAxis' | 'yAxis' | 'angleAxis' | 'radiusAxis') => {\n  if (axisName === 'xAxis') {\n    return axisObj[axisName].width;\n  }\n  if (axisName === 'yAxis') {\n    return axisObj[axisName].height;\n  }\n  // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n  return undefined;\n};\n\nexport const generateCategoricalChart = ({\n  chartName,\n  GraphicalChild,\n  defaultTooltipEventType = 'axis',\n  validateTooltipEventTypes = ['axis'],\n  axisComponents,\n  legendContent,\n  formatAxisMap,\n  defaultProps,\n}: CategoricalChartOptions) => {\n  const getFormatItems = (props: CategoricalChartProps, currentState: CategoricalChartState): any[] => {\n    const { graphicalItems, stackGroups, offset, updateId, dataStartIndex, dataEndIndex } = currentState;\n    const { barSize, layout, barGap, barCategoryGap, maxBarSize: globalMaxBarSize } = props;\n    const { numericAxisName, cateAxisName } = getAxisNameByLayout(layout);\n    const hasBar = hasGraphicalBarItem(graphicalItems);\n\n    const formattedItems = [] as any[];\n\n    graphicalItems.forEach((item: ReactElement, index: number) => {\n      const displayedData = getDisplayedData(props.data, { graphicalItems: [item], dataStartIndex, dataEndIndex });\n      const itemProps =\n        (item.type as any).defaultProps !== undefined\n          ? { ...(item.type as any).defaultProps, ...item.props }\n          : item.props;\n      const { dataKey, maxBarSize: childMaxBarSize } = itemProps;\n      // axisId of the numerical axis\n      const numericAxisId = itemProps[`${numericAxisName}Id`];\n      // axisId of the categorical axis\n      const cateAxisId = itemProps[`${cateAxisName}Id`];\n\n      const axisObjInitialValue: AxisObj = {};\n\n      const axisObj: AxisObj = axisComponents.reduce((result: AxisObj, entry: BaseAxisProps): AxisObj => {\n        // map of axisId to axis for a specific axis type\n        const axisMap: AxisMap | undefined = currentState[`${entry.axisType}Map` as const];\n        // axisId of axis we are currently computing\n        const id: string = itemProps[`${entry.axisType}Id`];\n\n        /**\n         * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n         * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n         * leave it out of the check for now.\n         */\n        invariant(\n          (axisMap && axisMap[id]) || entry.axisType === 'zAxis',\n          `Specifying a(n) ${entry.axisType}Id requires a corresponding ${\n            entry.axisType\n            // @ts-expect-error we should stop reading data from ReactElements\n          }Id on the targeted graphical component ${item?.type?.displayName ?? ''}`,\n        );\n\n        // the axis we are currently formatting\n        const axis = axisMap[id];\n\n        return {\n          ...result,\n          [entry.axisType]: axis,\n          [`${entry.axisType}Ticks`]: getTicksOfAxis(axis),\n        };\n      }, axisObjInitialValue);\n      const cateAxis = axisObj[cateAxisName];\n      const cateTicks = axisObj[`${cateAxisName}Ticks` as const];\n      const stackedData =\n        stackGroups &&\n        stackGroups[numericAxisId] &&\n        stackGroups[numericAxisId].hasStack &&\n        getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n      const itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n      const bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n      let barPosition: ReadonlyArray<BarPosition> = [];\n      const sizeList =\n        hasBar && getBarSizeList({ barSize, stackGroups, totalSize: getCartesianAxisSize(axisObj, cateAxisName) });\n\n      if (itemIsBar) {\n        // If it is bar, calculate the position of bar\n        const maxBarSize: number = isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n        const barBandSize: number = getBandSizeOfAxis(cateAxis, cateTicks, true) ?? maxBarSize ?? 0;\n        barPosition = getBarPosition({\n          barGap,\n          barCategoryGap,\n          bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n          sizeList: sizeList[cateAxisId],\n          maxBarSize,\n        });\n\n        if (barBandSize !== bandSize) {\n          barPosition = barPosition.map(pos => ({\n            ...pos,\n            position: { ...pos.position, offset: pos.position.offset - barBandSize / 2 },\n          }));\n        }\n      }\n      // @ts-expect-error we should stop reading data from ReactElements\n      const composedFn = item && item.type && item.type.getComposedData;\n\n      if (composedFn) {\n        formattedItems.push({\n          props: {\n            ...composedFn({\n              ...axisObj,\n              displayedData,\n              props,\n              dataKey,\n              item,\n              bandSize,\n              barPosition,\n              offset,\n              stackedData,\n              layout,\n              dataStartIndex,\n              dataEndIndex,\n            }),\n            key: item.key || `item-${index}`,\n            [numericAxisName]: axisObj[numericAxisName],\n            [cateAxisName]: axisObj[cateAxisName],\n            animationId: updateId,\n          },\n          childIndex: parseChildIndex(item, props.children),\n          item,\n        });\n      }\n    });\n\n    return formattedItems;\n  };\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  const updateStateOfAxisMapsOffsetAndStackGroups = (\n    { props, dataStartIndex, dataEndIndex, updateId }: any,\n    prevState?: CategoricalChartState,\n  ): any => {\n    if (!validateWidthHeight({ props })) {\n      return null;\n    }\n\n    const { children, layout, stackOffset, data, reverseStackOrder } = props;\n    const { numericAxisName, cateAxisName } = getAxisNameByLayout(layout);\n    const graphicalItems = findAllByType(children, GraphicalChild);\n    const stackGroups: AxisStackGroups = getStackGroupsByAxisId(\n      data,\n      graphicalItems,\n      `${numericAxisName}Id`,\n      `${cateAxisName}Id`,\n      stackOffset,\n      reverseStackOrder,\n    );\n    const axisObj: AxisMapMap = axisComponents.reduce((result: AxisMapMap, entry: BaseAxisProps): AxisMapMap => {\n      const name = `${entry.axisType}Map`;\n\n      return {\n        ...result,\n        [name]: getAxisMap(props, {\n          ...entry,\n          graphicalItems,\n          stackGroups: entry.axisType === numericAxisName && stackGroups,\n          dataStartIndex,\n          dataEndIndex,\n        }),\n      };\n    }, {});\n\n    const offset: ChartOffset = calculateOffset({ ...axisObj, props, graphicalItems }, prevState?.legendBBox);\n\n    Object.keys(axisObj).forEach(key => {\n      axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n    });\n    const cateAxisMap = axisObj[`${cateAxisName}Map`];\n    const ticksObj = tooltipTicksGenerator(cateAxisMap);\n\n    const formattedGraphicalItems = getFormatItems(props, {\n      ...axisObj,\n      dataStartIndex,\n      dataEndIndex,\n      updateId,\n      graphicalItems,\n      stackGroups,\n      offset,\n    });\n\n    return {\n      formattedGraphicalItems,\n      graphicalItems,\n      offset,\n      stackGroups,\n      ...ticksObj,\n      ...axisObj,\n    };\n  };\n\n  class CategoricalChartWrapper extends Component<CategoricalChartProps, CategoricalChartState> {\n    static displayName = chartName;\n\n    readonly eventEmitterSymbol: Symbol = Symbol('rechartsEventEmitter');\n\n    clipPathId: string;\n\n    accessibilityManager = new AccessibilityManager();\n\n    throttleTriggeredAfterMouseMove: DebouncedFunc<typeof CategoricalChartWrapper.prototype.triggeredAfterMouseMove>;\n\n    // todo join specific chart propTypes\n    static defaultProps: CategoricalChartProps = {\n      layout: 'horizontal',\n      stackOffset: 'none',\n      barCategoryGap: '10%',\n      barGap: 4,\n      margin: { top: 5, right: 5, bottom: 5, left: 5 } as Margin,\n      reverseStackOrder: false,\n      syncMethod: 'index',\n      ...defaultProps,\n    };\n\n    container?: HTMLElement;\n\n    constructor(props: CategoricalChartProps) {\n      super(props);\n\n      this.clipPathId = `${props.id ?? uniqueId('recharts')}-clip`;\n\n      // trigger 60fps\n      this.throttleTriggeredAfterMouseMove = throttle(this.triggeredAfterMouseMove, props.throttleDelay ?? 1000 / 60);\n\n      this.state = {};\n    }\n\n    componentDidMount() {\n      this.addListener();\n\n      this.accessibilityManager.setDetails({\n        container: this.container,\n        offset: {\n          left: this.props.margin.left ?? 0,\n          top: this.props.margin.top ?? 0,\n        },\n        coordinateList: this.state.tooltipTicks,\n        mouseHandlerCallback: this.triggeredAfterMouseMove,\n        layout: this.props.layout,\n      });\n      this.displayDefaultTooltip();\n    }\n\n    displayDefaultTooltip() {\n      const { children, data, height, layout } = this.props;\n\n      const tooltipElem = findChildByType(children, Tooltip);\n      // If the chart doesn't include a <Tooltip /> element, there's no tooltip to display\n      if (!tooltipElem) {\n        return;\n      }\n\n      const { defaultIndex } = tooltipElem.props;\n\n      // Protect against runtime errors\n      if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length - 1) {\n        return;\n      }\n\n      const activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n      let activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n\n      const independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n      const dependentAxisCoord = (this.state.offset.top + height) / 2;\n\n      const isHorizontal = layout === 'horizontal';\n      let activeCoordinate = isHorizontal\n        ? {\n            x: independentAxisCoord,\n            y: dependentAxisCoord,\n          }\n        : {\n            y: independentAxisCoord,\n            x: dependentAxisCoord,\n          };\n\n      // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n      // element knows its own Y coordinates.\n      // If there's a scatter plot, we'll want to grab that element for an interrogation.\n      const scatterPlotElement = this.state.formattedGraphicalItems.find(\n        ({ item }: { item: any }) => item.type.name === 'Scatter',\n      );\n      if (scatterPlotElement) {\n        activeCoordinate = {\n          ...activeCoordinate,\n          ...scatterPlotElement.props.points[defaultIndex].tooltipPosition,\n        };\n        activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n      }\n\n      const nextState = {\n        activeTooltipIndex: defaultIndex,\n        isTooltipActive: true,\n        activeLabel,\n        activePayload,\n        activeCoordinate,\n      };\n\n      this.setState(nextState);\n      this.renderCursor(tooltipElem);\n\n      // Make sure that anyone who keyboard-only users who tab to the chart will start their\n      // cursors at defaultIndex\n      this.accessibilityManager.setIndex(defaultIndex);\n    }\n\n    getSnapshotBeforeUpdate(\n      prevProps: Readonly<CategoricalChartProps>,\n      prevState: Readonly<CategoricalChartState>,\n    ): null {\n      if (!this.props.accessibilityLayer) {\n        return null;\n      }\n\n      if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n        this.accessibilityManager.setDetails({\n          coordinateList: this.state.tooltipTicks,\n        });\n      }\n\n      if (this.props.layout !== prevProps.layout) {\n        this.accessibilityManager.setDetails({\n          layout: this.props.layout,\n        });\n      }\n\n      if (this.props.margin !== prevProps.margin) {\n        this.accessibilityManager.setDetails({\n          offset: {\n            left: this.props.margin.left ?? 0,\n            top: this.props.margin.top ?? 0,\n          },\n        });\n      }\n\n      // Something has to be returned for getSnapshotBeforeUpdate\n      return null;\n    }\n\n    static getDerivedStateFromProps = (\n      nextProps: CategoricalChartProps,\n      prevState: CategoricalChartState,\n    ): CategoricalChartState => {\n      const { dataKey, data, children, width, height, layout, stackOffset, margin } = nextProps;\n      const { dataStartIndex, dataEndIndex } = prevState;\n\n      if (prevState.updateId === undefined) {\n        const defaultState = createDefaultState(nextProps);\n        return {\n          ...defaultState,\n          updateId: 0,\n          ...updateStateOfAxisMapsOffsetAndStackGroups(\n            {\n              props: nextProps,\n              ...defaultState,\n              updateId: 0,\n            },\n            prevState,\n          ),\n\n          prevDataKey: dataKey,\n          prevData: data,\n          prevWidth: width,\n          prevHeight: height,\n          prevLayout: layout,\n          prevStackOffset: stackOffset,\n          prevMargin: margin,\n          prevChildren: children,\n        };\n      }\n      if (\n        dataKey !== prevState.prevDataKey ||\n        data !== prevState.prevData ||\n        width !== prevState.prevWidth ||\n        height !== prevState.prevHeight ||\n        layout !== prevState.prevLayout ||\n        stackOffset !== prevState.prevStackOffset ||\n        !shallowEqual(margin, prevState.prevMargin)\n      ) {\n        const defaultState = createDefaultState(nextProps);\n\n        // Fixes https://github.com/recharts/recharts/issues/2143\n        const 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\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        const updatesToState = {\n          // Update the current tooltip data (in case it changes without mouse interaction)\n          ...getTooltipData(prevState, data, layout),\n          updateId: prevState.updateId + 1,\n        };\n\n        const newState = {\n          ...defaultState,\n          ...keepFromPrevState,\n          ...updatesToState,\n        };\n\n        return {\n          ...newState,\n          ...updateStateOfAxisMapsOffsetAndStackGroups(\n            {\n              props: nextProps,\n              ...newState,\n            },\n            prevState,\n          ),\n          prevDataKey: dataKey,\n          prevData: data,\n          prevWidth: width,\n          prevHeight: height,\n          prevLayout: layout,\n          prevStackOffset: stackOffset,\n          prevMargin: margin,\n          prevChildren: children,\n        };\n      }\n      if (!isChildrenEqual(children, prevState.prevChildren)) {\n        // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n        const brush = findChildByType(children, Brush);\n\n        const startIndex = brush ? brush.props?.startIndex ?? dataStartIndex : dataStartIndex;\n        const endIndex = brush ? brush.props?.endIndex ?? dataEndIndex : dataEndIndex;\n        const hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n\n        // update configuration in children\n        const hasGlobalData = !isNil(data);\n        const newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n\n        return {\n          updateId: newUpdateId,\n          ...updateStateOfAxisMapsOffsetAndStackGroups(\n            {\n              props: nextProps,\n              ...prevState,\n              updateId: newUpdateId,\n              dataStartIndex: startIndex,\n              dataEndIndex: endIndex,\n            },\n            prevState,\n          ),\n          prevChildren: children,\n          dataStartIndex: startIndex,\n          dataEndIndex: endIndex,\n        };\n      }\n\n      return null;\n    };\n\n    componentDidUpdate(prevProps: CategoricalChartProps) {\n      // Check to see if the Tooltip updated. If so, re-check default tooltip position\n      if (\n        !isChildrenEqual(\n          [findChildByType(prevProps.children, Tooltip)],\n          [findChildByType(this.props.children, Tooltip)],\n        )\n      ) {\n        this.displayDefaultTooltip();\n      }\n    }\n\n    componentWillUnmount() {\n      this.removeListener();\n      this.throttleTriggeredAfterMouseMove.cancel();\n    }\n\n    getTooltipEventType(): TooltipEventType {\n      const tooltipItem = findChildByType(this.props.children, Tooltip);\n\n      if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n        const eventType = tooltipItem.props.shared ? 'axis' : 'item';\n\n        return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n      }\n\n      return defaultTooltipEventType;\n    }\n\n    /**\n     * Get the information of mouse in chart, return null when the mouse is not in the chart\n     * @param  {MousePointer} event    The event object\n     * @return {Object}          Mouse data\n     */\n    getMouseInfo(event: MousePointer) {\n      if (!this.container) {\n        return null;\n      }\n\n      const element = this.container;\n      const boundingRect = element.getBoundingClientRect();\n      const containerOffset = getOffset(boundingRect);\n      const e = {\n        chartX: Math.round(event.pageX - containerOffset.left),\n        chartY: Math.round(event.pageY - containerOffset.top),\n      };\n\n      const scale = boundingRect.width / element.offsetWidth || 1;\n\n      const rangeObj = this.inRange(e.chartX, e.chartY, scale);\n      if (!rangeObj) {\n        return null;\n      }\n\n      const { xAxisMap, yAxisMap } = this.state;\n      const tooltipEventType = this.getTooltipEventType();\n\n      if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n        const xScale = getAnyElementOfObject(xAxisMap).scale;\n        const yScale = getAnyElementOfObject(yAxisMap).scale;\n        const xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n        const yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n\n        return { ...e, xValue, yValue };\n      }\n\n      const toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n\n      if (toolTipData) {\n        return {\n          ...e,\n          ...toolTipData,\n        };\n      }\n\n      return null;\n    }\n\n    inRange(x: number, y: number, scale = 1): any {\n      const { layout } = this.props;\n\n      const [scaledX, scaledY] = [x / scale, y / scale];\n\n      if (layout === 'horizontal' || layout === 'vertical') {\n        const { offset } = this.state;\n\n        const isInRange =\n          scaledX >= offset.left &&\n          scaledX <= offset.left + offset.width &&\n          scaledY >= offset.top &&\n          scaledY <= offset.top + offset.height;\n\n        return isInRange ? { x: scaledX, y: scaledY } : null;\n      }\n\n      const { angleAxisMap, radiusAxisMap } = this.state;\n\n      if (angleAxisMap && radiusAxisMap) {\n        const angleAxis = getAnyElementOfObject(angleAxisMap);\n        return inRangeOfSector({ x: scaledX, y: scaledY }, angleAxis);\n      }\n\n      return null;\n    }\n\n    parseEventsOfWrapper() {\n      const { children } = this.props;\n      const tooltipEventType = this.getTooltipEventType();\n      const tooltipItem = findChildByType(children, Tooltip);\n      let tooltipEvents: any = {};\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            onDoubleClick: this.handleDoubleClick,\n            onMouseMove: this.handleMouseMove,\n            onMouseLeave: this.handleMouseLeave,\n            onTouchMove: this.handleTouchMove,\n            onTouchStart: this.handleTouchStart,\n            onTouchEnd: this.handleTouchEnd,\n            onContextMenu: this.handleContextMenu,\n          };\n        }\n      }\n\n      // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n      const outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n\n      return {\n        ...outerEvents,\n        ...tooltipEvents,\n      };\n    }\n\n    addListener() {\n      eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n    }\n\n    removeListener() {\n      eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n    }\n\n    handleLegendBBoxUpdate = (box: DOMRect | null) => {\n      if (box) {\n        const { dataStartIndex, dataEndIndex, updateId } = this.state;\n\n        this.setState({\n          legendBBox: box,\n          ...updateStateOfAxisMapsOffsetAndStackGroups(\n            {\n              props: this.props,\n              dataStartIndex,\n              dataEndIndex,\n              updateId,\n            },\n            { ...this.state, legendBBox: box },\n          ),\n        });\n      }\n    };\n\n    handleReceiveSyncEvent = (cId: number | string, data: CategoricalChartState, emitter: Symbol) => {\n      if (this.props.syncId === cId) {\n        if (emitter === this.eventEmitterSymbol && typeof this.props.syncMethod !== 'function') {\n          return;\n        }\n\n        this.applySyncEvent(data);\n      }\n    };\n\n    handleBrushChange = ({ startIndex, endIndex }: { startIndex: number; endIndex: number }) => {\n      // Only trigger changes if the extents of the brush have actually changed\n      if (startIndex !== this.state.dataStartIndex || endIndex !== this.state.dataEndIndex) {\n        const { updateId } = this.state;\n\n        this.setState(() => ({\n          dataStartIndex: startIndex,\n          dataEndIndex: endIndex,\n          ...updateStateOfAxisMapsOffsetAndStackGroups(\n            {\n              props: this.props,\n              dataStartIndex: startIndex,\n              dataEndIndex: endIndex,\n              updateId,\n            },\n            this.state,\n          ),\n        }));\n\n        this.triggerSyncEvent({\n          dataStartIndex: startIndex,\n          dataEndIndex: endIndex,\n        });\n      }\n    };\n\n    /**\n     * The handler of mouse entering chart\n     * @param  {Object} e              Event object\n     * @return {Null}                  null\n     */\n    handleMouseEnter = (e: React.MouseEvent) => {\n      const mouse = this.getMouseInfo(e);\n\n      if (mouse) {\n        const nextState: CategoricalChartState = { ...mouse, isTooltipActive: true };\n        this.setState(nextState);\n        this.triggerSyncEvent(nextState);\n\n        const { onMouseEnter } = this.props;\n        if (isFunction(onMouseEnter)) {\n          onMouseEnter(nextState, e);\n        }\n      }\n    };\n\n    triggeredAfterMouseMove = (e: MousePointer): any => {\n      const mouse = this.getMouseInfo(e);\n      const nextState: CategoricalChartState = mouse ? { ...mouse, isTooltipActive: true } : { isTooltipActive: false };\n\n      this.setState(nextState);\n      this.triggerSyncEvent(nextState);\n\n      const { onMouseMove } = this.props;\n      if (isFunction(onMouseMove)) {\n        onMouseMove(nextState, e);\n      }\n    };\n\n    /**\n     * The handler of mouse entering a scatter\n     * @param {Object} el The active scatter\n     * @return {Object} no return\n     */\n    handleItemMouseEnter = (el: any) => {\n      this.setState(() => ({\n        isTooltipActive: true,\n        activeItem: el,\n        activePayload: el.tooltipPayload,\n        activeCoordinate: el.tooltipPosition || { x: el.cx, y: el.cy },\n      }));\n    };\n\n    /**\n     * The handler of mouse leaving a scatter\n     * @return {Object} no return\n     */\n    handleItemMouseLeave = () => {\n      this.setState(() => ({\n        isTooltipActive: false,\n      }));\n    };\n\n    /**\n     * The handler of mouse moving in chart\n     * @param  {React.MouseEvent} e        Event object\n     * @return {void} no return\n     */\n\n    handleMouseMove = (e: MousePointer & Partial<Omit<React.MouseEvent, keyof MousePointer>>): void => {\n      e.persist();\n      this.throttleTriggeredAfterMouseMove(e);\n    };\n\n    /**\n     * The handler if mouse leaving chart\n     * @param {Object} e Event object\n     * @return {Null} no return\n     */\n    handleMouseLeave = (e: any) => {\n      this.throttleTriggeredAfterMouseMove.cancel();\n      const nextState: CategoricalChartState = { isTooltipActive: false };\n\n      this.setState(nextState);\n      this.triggerSyncEvent(nextState);\n\n      const { onMouseLeave } = this.props;\n      if (isFunction(onMouseLeave)) {\n        onMouseLeave(nextState, e);\n      }\n    };\n\n    handleOuterEvent = (e: React.MouseEvent | React.TouchEvent) => {\n      const eventName = getReactEventByType(e);\n\n      const event = get(this.props, `${eventName}`);\n      if (eventName && isFunction(event)) {\n        let mouse;\n        if (/.*touch.*/i.test(eventName)) {\n          mouse = this.getMouseInfo((e as React.TouchEvent).changedTouches[0]);\n        } else {\n          mouse = this.getMouseInfo(e as React.MouseEvent);\n        }\n\n        event(mouse ?? {}, e);\n      }\n    };\n\n    handleClick = (e: React.MouseEvent) => {\n      const mouse = this.getMouseInfo(e);\n\n      if (mouse) {\n        const nextState: CategoricalChartState = { ...mouse, isTooltipActive: true };\n        this.setState(nextState);\n        this.triggerSyncEvent(nextState);\n\n        const { onClick } = this.props;\n        if (isFunction(onClick)) {\n          onClick(nextState, e);\n        }\n      }\n    };\n\n    handleMouseDown = (e: React.MouseEvent | React.Touch) => {\n      const { onMouseDown } = this.props;\n\n      if (isFunction(onMouseDown)) {\n        const nextState: CategoricalChartState = this.getMouseInfo(e);\n        onMouseDown(nextState, e);\n      }\n    };\n\n    handleMouseUp = (e: React.MouseEvent | React.Touch) => {\n      const { onMouseUp } = this.props;\n\n      if (isFunction(onMouseUp)) {\n        const nextState: CategoricalChartState = this.getMouseInfo(e);\n        onMouseUp(nextState, e);\n      }\n    };\n\n    handleTouchMove = (e: React.TouchEvent) => {\n      if (e.changedTouches != null && e.changedTouches.length > 0) {\n        this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n      }\n    };\n\n    handleTouchStart = (e: React.TouchEvent) => {\n      if (e.changedTouches != null && e.changedTouches.length > 0) {\n        this.handleMouseDown(e.changedTouches[0]);\n      }\n    };\n\n    handleTouchEnd = (e: React.TouchEvent) => {\n      if (e.changedTouches != null && e.changedTouches.length > 0) {\n        this.handleMouseUp(e.changedTouches[0]);\n      }\n    };\n\n    handleDoubleClick = (e: React.MouseEvent) => {\n      const { onDoubleClick } = this.props;\n\n      if (isFunction(onDoubleClick)) {\n        const nextState: CategoricalChartState = this.getMouseInfo(e);\n        onDoubleClick(nextState, e);\n      }\n    };\n\n    handleContextMenu = (e: React.MouseEvent) => {\n      const { onContextMenu } = this.props;\n\n      if (isFunction(onContextMenu)) {\n        const nextState: CategoricalChartState = this.getMouseInfo(e);\n        onContextMenu(nextState, e);\n      }\n    };\n\n    triggerSyncEvent = (data: CategoricalChartState) => {\n      if (this.props.syncId !== undefined) {\n        eventCenter.emit(SYNC_EVENT, this.props.syncId, data, this.eventEmitterSymbol);\n      }\n    };\n\n    applySyncEvent = (data: CategoricalChartState) => {\n      const { layout, syncMethod } = this.props;\n      const { updateId } = this.state;\n      const { dataStartIndex, dataEndIndex } = data;\n\n      if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n        this.setState({\n          dataStartIndex,\n          dataEndIndex,\n          ...updateStateOfAxisMapsOffsetAndStackGroups(\n            {\n              props: this.props,\n              dataStartIndex,\n              dataEndIndex,\n              updateId,\n            },\n            this.state,\n          ),\n        });\n      } else if (data.activeTooltipIndex !== undefined) {\n        const { chartX, chartY } = data;\n        let { activeTooltipIndex } = data;\n        const { offset, tooltipTicks } = this.state;\n        if (!offset) {\n          return;\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          for (let i = 0; i < tooltipTicks.length; i++) {\n            if (tooltipTicks[i].value === data.activeLabel) {\n              activeTooltipIndex = i;\n              break;\n            }\n          }\n        }\n        const viewBox: CartesianViewBox = { ...offset, x: offset.left, y: offset.top };\n        // When a categorical chart is combined with another chart, the value of chartX\n        // and chartY may beyond the boundaries.\n        const validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n        const validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n        const activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n        const activePayload: any = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n        const activeCoordinate = tooltipTicks[activeTooltipIndex]\n          ? {\n              x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n              y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate,\n            }\n          : originCoordinate;\n\n        this.setState({\n          ...data,\n          activeLabel,\n          activeCoordinate,\n          activePayload,\n          activeTooltipIndex,\n        });\n      } else {\n        this.setState(data);\n      }\n    };\n\n    filterFormatItem(item: any, displayName: any, childIndex: any) {\n      const { formattedGraphicalItems } = this.state;\n\n      for (let i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n        const entry = formattedGraphicalItems[i];\n\n        if (\n          entry.item === item ||\n          entry.props.key === item.key ||\n          (displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex)\n        ) {\n          return entry;\n        }\n      }\n\n      return null;\n    }\n\n    renderCursor = (element: ReactElement) => {\n      const { isTooltipActive, activeCoordinate, activePayload, offset, activeTooltipIndex, tooltipAxisBandSize } =\n        this.state;\n      const tooltipEventType = this.getTooltipEventType();\n      // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n      const isActive: boolean = element.props.active ?? isTooltipActive;\n      const { layout } = this.props;\n      const key = element.key || '_recharts-cursor';\n\n      return (\n        <Cursor\n          key={key}\n          activeCoordinate={activeCoordinate}\n          activePayload={activePayload}\n          activeTooltipIndex={activeTooltipIndex}\n          chartName={chartName}\n          element={element}\n          isActive={isActive}\n          layout={layout}\n          offset={offset}\n          tooltipAxisBandSize={tooltipAxisBandSize}\n          tooltipEventType={tooltipEventType}\n        />\n      );\n    };\n\n    renderPolarAxis = (element: React.ReactElement<any>, displayName: string, index: number) => {\n      const axisType = get(element, 'type.axisType');\n      const axisMap = get(this.state, `${axisType}Map`);\n      const elementDefaultProps = (element.type as any).defaultProps;\n      const elementProps =\n        elementDefaultProps !== undefined ? { ...elementDefaultProps, ...element.props } : element.props;\n      const axisOption: BaseAxisProps | undefined = axisMap && axisMap[elementProps[`${axisType}Id`]];\n\n      return cloneElement(element, {\n        ...axisOption,\n        className: clsx(axisType, axisOption.className),\n        key: element.key || `${displayName}-${index}`,\n        ticks: getTicksOfAxis(axisOption, true),\n      });\n    };\n\n    renderPolarGrid = (element: React.ReactElement): React.ReactElement => {\n      const { radialLines, polarAngles, polarRadius } = element.props;\n      const { radiusAxisMap, angleAxisMap } = this.state;\n      const radiusAxis = getAnyElementOfObject(radiusAxisMap);\n      const angleAxis = getAnyElementOfObject(angleAxisMap);\n      const { cx, cy, innerRadius, outerRadius } = angleAxis;\n\n      return cloneElement(element, {\n        polarAngles: Array.isArray(polarAngles)\n          ? polarAngles\n          : getTicksOfAxis(angleAxis, true).map((entry: any) => entry.coordinate),\n        polarRadius: Array.isArray(polarRadius)\n          ? polarRadius\n          : getTicksOfAxis(radiusAxis, true).map((entry: any) => entry.coordinate),\n        cx,\n        cy,\n        innerRadius,\n        outerRadius,\n        key: element.key || 'polar-grid',\n        radialLines,\n      });\n    };\n\n    /**\n     * Draw legend\n     * @return {ReactElement}            The instance of Legend\n     */\n    renderLegend = (): React.ReactElement => {\n      const { formattedGraphicalItems } = this.state;\n      const { children, width, height } = this.props;\n      const margin = this.props.margin || {};\n      const legendWidth: number = width - (margin.left || 0) - (margin.right || 0);\n      const props = getLegendProps({\n        children,\n        formattedGraphicalItems,\n        legendWidth,\n        legendContent,\n      });\n\n      if (!props) {\n        return null;\n      }\n\n      const { item, ...otherProps } = props;\n\n      return cloneElement(item, {\n        ...otherProps,\n        chartWidth: width,\n        chartHeight: height,\n        margin,\n        onBBoxUpdate: this.handleLegendBBoxUpdate,\n      });\n    };\n\n    /**\n     * Draw Tooltip\n     * @return {ReactElement}  The instance of Tooltip\n     */\n    renderTooltip = (): React.ReactElement => {\n      const { children, accessibilityLayer } = this.props;\n      const tooltipItem = findChildByType(children, Tooltip);\n\n      if (!tooltipItem) {\n        return null;\n      }\n\n      const { isTooltipActive, activeCoordinate, activePayload, activeLabel, offset } = this.state;\n\n      // The user can set isActive on the Tooltip,\n      // and we respect the user to enable customisation.\n      // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n      const isActive = tooltipItem.props.active ?? isTooltipActive;\n\n      return cloneElement(tooltipItem, {\n        viewBox: { ...offset, x: offset.left, y: offset.top },\n        active: isActive,\n        label: activeLabel,\n        payload: isActive ? activePayload : [],\n        coordinate: activeCoordinate,\n        accessibilityLayer,\n      });\n    };\n\n    renderBrush = (element: React.ReactElement) => {\n      const { margin, data } = this.props;\n      const { offset, dataStartIndex, dataEndIndex, updateId } = this.state;\n\n      // TODO: update brush when children update\n      return cloneElement(element, {\n        key: element.key || '_recharts-brush',\n        onChange: combineEventHandlers(this.handleBrushChange, element.props.onChange),\n        data,\n        x: isNumber(element.props.x) ? element.props.x : offset.left,\n        y: isNumber(element.props.y)\n          ? element.props.y\n          : 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-${updateId}`,\n      });\n    };\n\n    renderReferenceElement = (element: React.ReactElement, displayName: string, index: number): React.ReactElement => {\n      if (!element) {\n        return null;\n      }\n      const { clipPathId } = this;\n      const { xAxisMap, yAxisMap, offset } = this.state;\n      const elementDefaultProps = (element.type as any).defaultProps || {};\n      const { xAxisId = elementDefaultProps.xAxisId, yAxisId = elementDefaultProps.yAxisId } = element.props;\n\n      return cloneElement(element, {\n        key: element.key || `${displayName}-${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,\n      });\n    };\n\n    static renderActiveDot = (option: any, props: any, key: string): React.ReactElement => {\n      let dot;\n\n      if (isValidElement(option)) {\n        dot = cloneElement(option, props);\n      } else if (isFunction(option)) {\n        dot = option(props);\n      } else {\n        dot = <Dot {...props} />;\n      }\n\n      return (\n        <Layer className=\"recharts-active-dot\" key={key}>\n          {dot}\n        </Layer>\n      );\n    };\n\n    renderActivePoints = ({ item, activePoint, basePoint, childIndex, isRange }: any) => {\n      const result = [];\n      // item is not a React Element so we don't need to resolve defaultProps.\n      const { key } = item.props;\n      const itemItemProps =\n        item.item.type.defaultProps !== undefined\n          ? { ...item.item.type.defaultProps, ...item.item.props }\n          : item.item.props;\n      const { activeDot, dataKey } = itemItemProps;\n      const dotProps = {\n        index: childIndex,\n        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        ...filterProps(activeDot, false),\n        ...adaptEventHandlers(activeDot),\n      };\n\n      result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps, `${key}-activePoint-${childIndex}`));\n\n      if (basePoint) {\n        result.push(\n          CategoricalChartWrapper.renderActiveDot(\n            activeDot,\n            {\n              ...dotProps,\n              cx: basePoint.x,\n              cy: basePoint.y,\n            },\n            `${key}-basePoint-${childIndex}`,\n          ),\n        );\n      } else if (isRange) {\n        result.push(null);\n      }\n\n      return result;\n    };\n\n    renderGraphicChild = (element: React.ReactElement, displayName: string, index: number): any[] => {\n      const item = this.filterFormatItem(element, displayName, index);\n      if (!item) {\n        return null;\n      }\n      const tooltipEventType = this.getTooltipEventType();\n      const { isTooltipActive, tooltipAxis, activeTooltipIndex, activeLabel } = this.state;\n      const { children } = this.props;\n      const tooltipItem = findChildByType(children, Tooltip);\n      // item is not a React Element so we don't need to resolve defaultProps\n      const { points, isRange, baseLine } = item.props;\n      const itemItemProps =\n        item.item.type.defaultProps !== undefined\n          ? { ...item.item.type.defaultProps, ...item.item.props }\n          : item.item.props;\n      const { activeDot, hide, activeBar, activeShape } = itemItemProps;\n      const hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n      let itemEvents = {};\n\n      if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n        itemEvents = {\n          onClick: combineEventHandlers(this.handleItemMouseEnter, element.props.onClick),\n        };\n      } else if (tooltipEventType !== 'axis') {\n        itemEvents = {\n          onMouseLeave: combineEventHandlers(this.handleItemMouseLeave, element.props.onMouseLeave),\n          onMouseEnter: combineEventHandlers(this.handleItemMouseEnter, element.props.onMouseEnter),\n        };\n      }\n\n      const graphicalItem = cloneElement(element, {\n        // item is not a React Element so we don't need to resolve defaultProps\n        ...item.props,\n        ...itemEvents,\n      });\n\n      function findWithPayload(entry: any) {\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        if (activeTooltipIndex >= 0) {\n          let activePoint, basePoint;\n\n          if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n            // number transform to string\n            const specifiedKey =\n              typeof tooltipAxis.dataKey === 'function'\n                ? findWithPayload\n                : '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 (activeShape || activeBar) {\n            const activeIndex =\n              element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n\n            return [\n              cloneElement(element, {\n                // item is not a React Element so we don't need to resolve defaultProps\n                ...item.props,\n                ...itemEvents,\n                activeIndex,\n              }),\n              null,\n              null,\n            ];\n          }\n\n          if (!isNil(activePoint)) {\n            return [\n              graphicalItem,\n              ...this.renderActivePoints({\n                item,\n                activePoint,\n                basePoint,\n                childIndex: activeTooltipIndex,\n                isRange,\n              }),\n            ];\n          }\n        } else {\n          /**\n           * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n           * In which case, this.state.activeTooltipIndex never gets set\n           * because the mouse events that trigger that value getting set never get trigged without the axis components.\n           *\n           * An example usage case is a FunnelChart\n           */\n          const {\n            graphicalItem: { item: xyItem = element, childIndex },\n          } = this.getItemByXY(this.state.activeCoordinate) ?? { graphicalItem };\n\n          const elementProps = {\n            // `item` is not a React Element so we don't need to resolve defaultProps\n            ...item.props,\n            ...itemEvents,\n            activeIndex: childIndex,\n          };\n\n          return [cloneElement(xyItem, elementProps), null, null];\n        }\n      }\n\n      if (isRange) {\n        return [graphicalItem, null, null];\n      }\n\n      return [graphicalItem, null];\n    };\n\n    renderCustomized = (element: React.ReactElement, displayName: string, index: number): React.ReactElement =>\n      cloneElement(element, {\n        key: `recharts-customized-${index}`,\n        ...this.props,\n        ...this.state,\n      });\n\n    renderClipPath() {\n      const { clipPathId } = this;\n      const {\n        offset: { left, top, height, width },\n      } = this.state;\n\n      return (\n        <defs>\n          <clipPath id={clipPathId}>\n            <rect x={left} y={top} height={height} width={width} />\n          </clipPath>\n        </defs>\n      );\n    }\n\n    public getXScales() {\n      const { xAxisMap } = this.state;\n\n      return xAxisMap\n        ? Object.entries(xAxisMap).reduce(\n            (res: Record<string, Function>, [axisId, axisProps]: [string, BaseAxisProps]) => {\n              return { ...res, [axisId]: (axisProps as BaseAxisProps).scale };\n            },\n            {},\n          )\n        : null;\n    }\n\n    public getYScales() {\n      const { yAxisMap } = this.state;\n\n      return yAxisMap\n        ? Object.entries(yAxisMap).reduce(\n            (res: Record<string, Function>, [axisId, axisProps]: [string, BaseAxisProps]) => {\n              return { ...res, [axisId]: (axisProps as BaseAxisProps).scale };\n            },\n            {},\n          )\n        : null;\n    }\n\n    public getXScaleByAxisId(axisId: string) {\n      return this.state.xAxisMap?.[axisId]?.scale;\n    }\n\n    public getYScaleByAxisId(axisId: string) {\n      return this.state.yAxisMap?.[axisId]?.scale;\n    }\n\n    public getItemByXY(chartXY: { x: number; y: number }) {\n      const { formattedGraphicalItems, activeItem } = this.state;\n      if (formattedGraphicalItems && formattedGraphicalItems.length) {\n        for (let i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n          const graphicalItem = formattedGraphicalItems[i];\n          // graphicalItem is not a React Element so we don't need to resolve defaultProps\n          const { props, item } = graphicalItem;\n          const itemProps =\n            item.type.defaultProps !== undefined ? { ...item.type.defaultProps, ...item.props } : item.props;\n          const itemDisplayName = getDisplayName(item.type);\n\n          if (itemDisplayName === 'Bar') {\n            const activeBarItem = (props.data || []).find(\n              (entry: { x: number; y: number; width: number; height: number }) => {\n                return isInRectangle(chartXY, entry);\n              },\n            );\n\n            if (activeBarItem) {\n              return { graphicalItem, payload: activeBarItem };\n            }\n          } else if (itemDisplayName === 'RadialBar') {\n            const activeBarItem = (props.data || []).find((entry: GeometrySector) => {\n              return inRangeOfSector(chartXY, entry);\n            });\n\n            if (activeBarItem) {\n              return { graphicalItem, payload: activeBarItem };\n            }\n          } else if (\n            isFunnel(graphicalItem, activeItem) ||\n            isPie(graphicalItem, activeItem) ||\n            isScatter(graphicalItem, activeItem)\n          ) {\n            const activeIndex = getActiveShapeIndexForTooltip({\n              graphicalItem,\n              activeTooltipItem: activeItem,\n              itemData: itemProps.data,\n            });\n\n            const childIndex = itemProps.activeIndex === undefined ? activeIndex : itemProps.activeIndex;\n\n            return {\n              graphicalItem: { ...graphicalItem, childIndex },\n              payload: isScatter(graphicalItem, activeItem)\n                ? itemProps.data[activeIndex]\n                : graphicalItem.props.data[activeIndex],\n            };\n          }\n        }\n      }\n\n      return null;\n    }\n\n    renderMap = {\n      CartesianGrid: { handler: renderAsIs, once: true },\n      ReferenceArea: { handler: this.renderReferenceElement },\n      ReferenceLine: { handler: renderAsIs },\n      ReferenceDot: { handler: this.renderReferenceElement },\n      XAxis: { handler: renderAsIs },\n      YAxis: { handler: renderAsIs },\n      Brush: { handler: this.renderBrush, once: true },\n      Bar: { handler: this.renderGraphicChild },\n      Line: { handler: this.renderGraphicChild },\n      Area: { handler: this.renderGraphicChild },\n      Radar: { handler: this.renderGraphicChild },\n      RadialBar: { handler: this.renderGraphicChild },\n      Scatter: { handler: this.renderGraphicChild },\n      Pie: { handler: this.renderGraphicChild },\n      Funnel: { handler: this.renderGraphicChild },\n      Tooltip: { handler: this.renderCursor, once: true },\n      PolarGrid: { handler: this.renderPolarGrid, once: true },\n      PolarAngleAxis: { handler: this.renderPolarAxis },\n      PolarRadiusAxis: { handler: this.renderPolarAxis },\n      Customized: { handler: this.renderCustomized },\n    };\n\n    render() {\n      if (!validateWidthHeight(this)) {\n        return null;\n      }\n\n      const { children, className, width, height, style, compact, title, desc, ...others } = this.props;\n      const attrs = filterProps(others, false);\n\n      // The \"compact\" mode is mainly used as the panorama within Brush\n      if (compact) {\n        return (\n          <ChartLayoutContextProvider\n            state={this.state}\n            width={this.props.width}\n            height={this.props.height}\n            clipPathId={this.clipPathId}\n          >\n            <Surface {...attrs} width={width} height={height} title={title} desc={desc}>\n              {this.renderClipPath()}\n              {renderByOrder(children, this.renderMap)}\n            </Surface>\n          </ChartLayoutContextProvider>\n        );\n      }\n\n      if (this.props.accessibilityLayer) {\n        // Set tabIndex to 0 by default (can be overwritten)\n        attrs.tabIndex = this.props.tabIndex ?? 0;\n        // Set role to img by default (can be overwritten)\n        attrs.role = this.props.role ?? 'application';\n        attrs.onKeyDown = (e: any) => {\n          this.accessibilityManager.keyboardEvent(e);\n          // 'onKeyDown' is not currently a supported prop that can be passed through\n          // if it's added, this should be added: this.props.onKeyDown(e);\n        };\n        attrs.onFocus = () => {\n          this.accessibilityManager.focus();\n          // 'onFocus' is not currently a supported prop that can be passed through\n          // if it's added, the focus event should be forwarded to the prop\n        };\n      }\n\n      const events = this.parseEventsOfWrapper();\n      return (\n        <ChartLayoutContextProvider\n          state={this.state}\n          width={this.props.width}\n          height={this.props.height}\n          clipPathId={this.clipPathId}\n        >\n          <div\n            className={clsx('recharts-wrapper', className)}\n            style={{ position: 'relative', cursor: 'default', width, height, ...style }}\n            {...events}\n            ref={(node: HTMLDivElement) => {\n              this.container = node;\n            }}\n          >\n            <Surface {...attrs} width={width} height={height} title={title} desc={desc} style={FULL_WIDTH_AND_HEIGHT}>\n              {this.renderClipPath()}\n              {renderByOrder(children, this.renderMap)}\n            </Surface>\n            {this.renderLegend()}\n            {this.renderTooltip()}\n          </div>\n        </ChartLayoutContextProvider>\n      );\n    }\n  }\n\n  const CategoricalChart = forwardRef<CategoricalChartWrapper, CategoricalChartProps>(function CategoricalChart(\n    props: CategoricalChartProps,\n    ref,\n  ) {\n    return <CategoricalChartWrapper {...props} ref={ref} />;\n  });\n\n  CategoricalChart.displayName = CategoricalChartWrapper.displayName;\n\n  return CategoricalChart;\n};\n","import { isNumber } from './DataUtils';\nimport { AxisDomain, BaseAxisProps } from './types';\n\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param   {AxisDomain}  domain              The potential domain from props\n * @param   {Boolean}     allowDataOverflow   from props\n * @param   {String}      axisType            from props\n * @returns {Boolean}                         `true` if domain is specified by user\n */\nexport function isDomainSpecifiedByUser(\n  domain: AxisDomain,\n  allowDataOverflow: boolean,\n  axisType: BaseAxisProps['type'],\n): boolean {\n  if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n    const domainStart: unknown | null | undefined = domain?.[0];\n    const domainEnd: unknown | null | undefined = domain?.[1];\n\n    /*\n     * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n     * In such case, we have to compute the domain from the data.\n     */\n    if (!!domainStart && !!domainEnd && isNumber(domainStart) && isNumber(domainEnd)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const LineChart = generateCategoricalChart({\n  chartName: 'LineChart',\n  GraphicalChild: Line,\n  axisComponents: [\n    { axisType: 'xAxis', AxisComp: XAxis },\n    { axisType: 'yAxis', AxisComp: YAxis },\n  ],\n  formatAxisMap,\n});\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const BarChart = generateCategoricalChart({\n  chartName: 'BarChart',\n  GraphicalChild: Bar,\n  defaultTooltipEventType: 'axis',\n  validateTooltipEventTypes: ['axis', 'item'],\n  axisComponents: [\n    { axisType: 'xAxis', AxisComp: XAxis },\n    { axisType: 'yAxis', AxisComp: YAxis },\n  ],\n  formatAxisMap,\n});\n","/**\n * @fileOverview Pie Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { Pie } from '../polar/Pie';\n\nexport const PieChart = generateCategoricalChart({\n  chartName: 'PieChart',\n  GraphicalChild: Pie,\n  validateTooltipEventTypes: ['item'],\n  defaultTooltipEventType: 'item',\n  legendContent: 'children',\n  axisComponents: [\n    { axisType: 'angleAxis', AxisComp: PolarAngleAxis },\n    { axisType: 'radiusAxis', AxisComp: PolarRadiusAxis },\n  ],\n  formatAxisMap,\n  defaultProps: {\n    layout: 'centric',\n    startAngle: 0,\n    endAngle: 360,\n    cx: '50%',\n    cy: '50%',\n    innerRadius: 0,\n    outerRadius: '80%',\n  },\n});\n","export const COLOR_PANEL = [\n  '#1890FF',\n  '#66B5FF',\n  '#41D9C7',\n  '#2FC25B',\n  '#6EDB8F',\n  '#9AE65C',\n  '#FACC14',\n  '#E6965C',\n  '#57AD71',\n  '#223273',\n  '#738AE6',\n  '#7564CC',\n  '#8543E0',\n  '#A877ED',\n  '#5C8EE6',\n  '#13C2C2',\n  '#70E0E0',\n  '#5CA3E6',\n  '#3436C7',\n  '#8082FF',\n  '#DD81E6',\n  '#F04864',\n  '#FA7D92',\n  '#D598D9',\n];\n","import isNan from 'lodash/isNaN';\nimport isFunction from 'lodash/isFunction';\nimport omit from 'lodash/omit';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\n/**\n * @fileOverview TreemapChart\n */\nimport React, { PureComponent } from 'react';\nimport Smooth from 'react-smooth';\n\nimport { Tooltip } from '../component/Tooltip';\nimport { Layer } from '../container/Layer';\nimport { Surface } from '../container/Surface';\nimport { Polygon } from '../shape/Polygon';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { COLOR_PANEL } from '../util/Constants';\nimport { uniqueId } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { filterSvgElements, findChildByType, validateWidthHeight, filterProps } from '../util/ReactUtils';\nimport { AnimationDuration, AnimationTiming, DataKey, TreemapNode } from '../util/types';\n\nconst NODE_VALUE_KEY = 'value';\n\nconst computeNode = ({\n  depth,\n  node,\n  index,\n  valueKey,\n}: {\n  depth: number;\n  node: TreemapNode;\n  index: number;\n  valueKey: DataKey<any>;\n}) => {\n  const { children } = node;\n  const childDepth = depth + 1;\n  const computedChildren =\n    children && children.length\n      ? children.map((child: TreemapNode, i: number) =>\n          computeNode({ depth: childDepth, node: child, index: i, valueKey }),\n        )\n      : null;\n  let nodeValue;\n\n  if (children && children.length) {\n    nodeValue = computedChildren.reduce((result: any, child: TreemapNode) => result + child[NODE_VALUE_KEY], 0);\n  } else {\n    // TODO need to verify valueKey\n    nodeValue = isNan(node[valueKey as string]) || node[valueKey as string] <= 0 ? 0 : node[valueKey as string];\n  }\n\n  return {\n    ...node,\n    children: computedChildren,\n    [NODE_VALUE_KEY]: nodeValue,\n    depth,\n    index,\n  };\n};\n\nconst filterRect = (node: TreemapNode) => ({ x: node.x, y: node.y, width: node.width, height: node.height });\n\n// Compute the area for each child based on value & scale.\nconst getAreaOfChildren = (children: TreemapNode[], areaValueRatio: number) => {\n  const ratio = areaValueRatio < 0 ? 0 : areaValueRatio;\n\n  return children.map((child: TreemapNode) => {\n    const area = child[NODE_VALUE_KEY] * ratio;\n\n    return {\n      ...child,\n      area: isNan(area) || area <= 0 ? 0 : area,\n    };\n  });\n};\n\n// Computes the score for the specified row, as the worst aspect ratio.\nconst getWorstScore = (row: any, parentSize: number, aspectRatio: number) => {\n  const parentArea = parentSize * parentSize;\n  const rowArea = row.area * row.area;\n  const { min, max } = row.reduce(\n    (result: any, child: any) => ({\n      min: Math.min(result.min, child.area),\n      max: Math.max(result.max, child.area),\n    }),\n    { min: Infinity, max: 0 },\n  );\n\n  return rowArea\n    ? Math.max((parentArea * max * aspectRatio) / rowArea, rowArea / (parentArea * min * aspectRatio))\n    : Infinity;\n};\n\nconst horizontalPosition = (row: any, parentSize: number, parentRect: TreemapNode, isFlush: boolean) => {\n  let rowHeight = parentSize ? Math.round(row.area / parentSize) : 0;\n\n  if (isFlush || rowHeight > parentRect.height) {\n    rowHeight = parentRect.height;\n  }\n\n  let curX = parentRect.x;\n  let child;\n  for (let i = 0, len = row.length; i < len; i++) {\n    child = row[i];\n    child.x = curX;\n    child.y = parentRect.y;\n    child.height = rowHeight;\n    child.width = Math.min(rowHeight ? Math.round(child.area / rowHeight) : 0, parentRect.x + parentRect.width - curX);\n    curX += child.width;\n  }\n  // add the remain x to the last one of row\n  child.width += parentRect.x + parentRect.width - curX;\n\n  return {\n    ...parentRect,\n    y: parentRect.y + rowHeight,\n    height: parentRect.height - rowHeight,\n  };\n};\n\nconst verticalPosition = (row: any, parentSize: number, parentRect: TreemapNode, isFlush: boolean): TreemapNode => {\n  let rowWidth = parentSize ? Math.round(row.area / parentSize) : 0;\n\n  if (isFlush || rowWidth > parentRect.width) {\n    rowWidth = parentRect.width;\n  }\n\n  let curY = parentRect.y;\n  let child;\n  for (let i = 0, len = row.length; i < len; i++) {\n    child = row[i];\n    child.x = parentRect.x;\n    child.y = curY;\n    child.width = rowWidth;\n    child.height = Math.min(rowWidth ? Math.round(child.area / rowWidth) : 0, parentRect.y + parentRect.height - curY);\n    curY += child.height;\n  }\n  if (child) {\n    child.height += parentRect.y + parentRect.height - curY;\n  }\n\n  return {\n    ...parentRect,\n    x: parentRect.x + rowWidth,\n    width: parentRect.width - rowWidth,\n  };\n};\n\nconst position = (row: any, parentSize: number, parentRect: TreemapNode, isFlush: boolean): TreemapNode => {\n  if (parentSize === parentRect.width) {\n    return horizontalPosition(row, parentSize, parentRect, isFlush);\n  }\n\n  return verticalPosition(row, parentSize, parentRect, isFlush);\n};\n\n// Recursively arranges the specified node's children into squarified rows.\nconst squarify = (node: TreemapNode, aspectRatio: number): TreemapNode => {\n  const { children } = node;\n\n  if (children && children.length) {\n    let rect = filterRect(node) as any;\n    // maybe a bug\n    const row = [] as any;\n    let best = Infinity; // the best row score so far\n    let child, score; // the current row score\n    let size = Math.min(rect.width, rect.height); // initial orientation\n    const scaleChildren = getAreaOfChildren(children, (rect.width * rect.height) / node[NODE_VALUE_KEY]);\n    const tempChildren = scaleChildren.slice();\n\n    row.area = 0;\n\n    while (tempChildren.length > 0) {\n      // row first\n      // eslint-disable-next-line prefer-destructuring\n      row.push((child = tempChildren[0]));\n      row.area += child.area;\n\n      score = getWorstScore(row, size, aspectRatio);\n      if (score <= best) {\n        // continue with this orientation\n        tempChildren.shift();\n        best = score;\n      } else {\n        // abort, and try a different orientation\n        row.area -= row.pop().area;\n        rect = position(row, size, rect, false);\n        size = Math.min(rect.width, rect.height);\n        row.length = row.area = 0;\n        best = Infinity;\n      }\n    }\n\n    if (row.length) {\n      rect = position(row, size, rect, true);\n      row.length = row.area = 0;\n    }\n\n    return {\n      ...node,\n      children: scaleChildren.map(c => squarify(c, aspectRatio)),\n    };\n  }\n\n  return node;\n};\n\nexport interface Props {\n  width?: number;\n\n  height?: number;\n\n  data?: any[];\n\n  animationId?: number;\n\n  style?: any;\n\n  aspectRatio?: number;\n\n  content?: React.ReactElement;\n\n  fill?: string;\n\n  stroke?: string;\n\n  className?: string;\n\n  nameKey?: DataKey<any>;\n\n  dataKey?: DataKey<any>;\n\n  children?: any;\n\n  // optional values flat/nest, flat show whole treemap, nest only show depth=1 node\n  type?: 'flat' | 'nest';\n\n  colorPanel?: [];\n\n  // customize nest index content\n  nestIndexContent?: React.ReactElement | ((item: any, i: number) => any);\n\n  onAnimationStart?: () => void;\n\n  onAnimationEnd?: () => void;\n\n  onMouseEnter?: (node: TreemapNode, e: any) => void;\n\n  onMouseLeave?: (node: TreemapNode, e: any) => void;\n\n  onClick?: (node: TreemapNode) => void;\n\n  isAnimationActive?: boolean;\n\n  isUpdateAnimationActive?: boolean;\n\n  animationBegin?: number;\n\n  animationDuration?: AnimationDuration;\n\n  animationEasing?: AnimationTiming;\n}\n\ninterface State {\n  isTooltipActive: boolean;\n\n  isAnimationFinished: boolean;\n\n  activeNode?: TreemapNode;\n\n  formatRoot?: TreemapNode;\n\n  currentRoot?: TreemapNode;\n\n  nestIndex?: TreemapNode[];\n\n  prevData?: any[];\n\n  prevType?: 'flat' | 'nest';\n\n  prevWidth?: number;\n\n  prevHeight?: number;\n\n  prevDataKey?: DataKey<any>;\n\n  prevAspectRatio?: number;\n}\n\nconst defaultState: State = {\n  isTooltipActive: false,\n\n  isAnimationFinished: false,\n\n  activeNode: null as TreemapNode,\n\n  formatRoot: null as TreemapNode,\n\n  currentRoot: null as TreemapNode,\n\n  nestIndex: [] as TreemapNode[],\n};\n\nexport class Treemap extends PureComponent<Props, State> {\n  static displayName = 'Treemap';\n\n  static defaultProps = {\n    aspectRatio: 0.5 * (1 + Math.sqrt(5)),\n    dataKey: 'value',\n    type: 'flat',\n    isAnimationActive: !Global.isSsr,\n    isUpdateAnimationActive: !Global.isSsr,\n    animationBegin: 0,\n    animationDuration: 1500,\n    animationEasing: 'linear',\n  };\n\n  state = {\n    ...defaultState,\n  };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    if (\n      nextProps.data !== prevState.prevData ||\n      nextProps.type !== prevState.prevType ||\n      nextProps.width !== prevState.prevWidth ||\n      nextProps.height !== prevState.prevHeight ||\n      nextProps.dataKey !== prevState.prevDataKey ||\n      nextProps.aspectRatio !== prevState.prevAspectRatio\n    ) {\n      const root = computeNode({\n        depth: 0,\n        node: { children: nextProps.data, x: 0, y: 0, width: nextProps.width, height: nextProps.height } as TreemapNode,\n        index: 0,\n        valueKey: nextProps.dataKey,\n      });\n      const formatRoot = squarify(root, nextProps.aspectRatio);\n\n      return {\n        ...prevState,\n        formatRoot,\n        currentRoot: root,\n        nestIndex: [root],\n        prevAspectRatio: nextProps.aspectRatio,\n        prevData: nextProps.data,\n        prevWidth: nextProps.width,\n        prevHeight: nextProps.height,\n        prevDataKey: nextProps.dataKey,\n        prevType: nextProps.type,\n      };\n    }\n\n    return null;\n  }\n\n  handleMouseEnter(node: TreemapNode, e: any) {\n    e.persist();\n    const { onMouseEnter, children } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (tooltipItem) {\n      this.setState(\n        {\n          isTooltipActive: true,\n          activeNode: node,\n        },\n        () => {\n          if (onMouseEnter) {\n            onMouseEnter(node, e);\n          }\n        },\n      );\n    } else if (onMouseEnter) {\n      onMouseEnter(node, e);\n    }\n  }\n\n  handleMouseLeave(node: TreemapNode, e: any) {\n    e.persist();\n    const { onMouseLeave, children } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (tooltipItem) {\n      this.setState(\n        {\n          isTooltipActive: false,\n          activeNode: null,\n        },\n        () => {\n          if (onMouseLeave) {\n            onMouseLeave(node, e);\n          }\n        },\n      );\n    } else if (onMouseLeave) {\n      onMouseLeave(node, e);\n    }\n  }\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n    this.setState({ isAnimationFinished: true });\n\n    if (isFunction(onAnimationEnd)) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n    this.setState({ isAnimationFinished: false });\n\n    if (isFunction(onAnimationStart)) {\n      onAnimationStart();\n    }\n  };\n\n  handleClick(node: TreemapNode) {\n    const { onClick, type } = this.props;\n    if (type === 'nest' && node.children) {\n      const { width, height, dataKey, aspectRatio } = this.props;\n      const root = computeNode({\n        depth: 0,\n        node: { ...node, x: 0, y: 0, width, height },\n        index: 0,\n        valueKey: dataKey,\n      });\n\n      const formatRoot = squarify(root, aspectRatio);\n\n      const { nestIndex } = this.state;\n      nestIndex.push(node);\n\n      this.setState({\n        formatRoot,\n        currentRoot: root,\n        nestIndex,\n      });\n    }\n    if (onClick) {\n      onClick(node);\n    }\n  }\n\n  handleNestIndex(node: TreemapNode, i: number) {\n    let { nestIndex } = this.state;\n    const { width, height, dataKey, aspectRatio } = this.props;\n    const root = computeNode({\n      depth: 0,\n      node: { ...node, x: 0, y: 0, width, height },\n      index: 0,\n      valueKey: dataKey,\n    });\n\n    const formatRoot = squarify(root, aspectRatio);\n\n    nestIndex = nestIndex.slice(0, i + 1);\n    this.setState({\n      formatRoot,\n      currentRoot: node,\n      nestIndex,\n    });\n  }\n\n  renderItem(content: any, nodeProps: TreemapNode, isLeaf: boolean): React.ReactElement {\n    const {\n      isAnimationActive,\n      animationBegin,\n      animationDuration,\n      animationEasing,\n      isUpdateAnimationActive,\n      type,\n      animationId,\n      colorPanel,\n    } = this.props;\n    const { isAnimationFinished } = this.state;\n    const { width, height, x, y, depth } = nodeProps;\n    const translateX = parseInt(`${(Math.random() * 2 - 1) * width}`, 10);\n    let event = {} as any;\n    if (isLeaf || type === 'nest') {\n      event = {\n        onMouseEnter: this.handleMouseEnter.bind(this, nodeProps),\n        onMouseLeave: this.handleMouseLeave.bind(this, nodeProps),\n        onClick: this.handleClick.bind(this, nodeProps),\n      };\n    }\n\n    if (!isAnimationActive) {\n      return (\n        <Layer {...event}>\n          {(this.constructor as any).renderContentItem(\n            content,\n            {\n              ...nodeProps,\n              isAnimationActive: false,\n              isUpdateAnimationActive: false,\n              width,\n              height,\n              x,\n              y,\n            },\n            type,\n            colorPanel,\n          )}\n        </Layer>\n      );\n    }\n\n    return (\n      <Smooth\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        key={`treemap-${animationId}`}\n        from={{ x, y, width, height }}\n        to={{ x, y, width, height }}\n        onAnimationStart={this.handleAnimationStart}\n        onAnimationEnd={this.handleAnimationEnd}\n      >\n        {({ x: currX, y: currY, width: currWidth, height: currHeight }: TreemapNode) => (\n          <Smooth\n            from={`translate(${translateX}px, ${translateX}px)`}\n            to=\"translate(0, 0)\"\n            attributeName=\"transform\"\n            begin={animationBegin}\n            easing={animationEasing}\n            isActive={isAnimationActive}\n            duration={animationDuration}\n          >\n            <Layer {...event}>\n              {(() => {\n                // when animation Duration , only render depth=1 nodes\n                if (depth > 2 && !isAnimationFinished) {\n                  return null;\n                }\n                return (this.constructor as any).renderContentItem(\n                  content,\n                  {\n                    ...nodeProps,\n                    isAnimationActive,\n                    isUpdateAnimationActive: !isUpdateAnimationActive,\n                    width: currWidth,\n                    height: currHeight,\n                    x: currX,\n                    y: currY,\n                  },\n                  type,\n                  colorPanel,\n                );\n              })()}\n            </Layer>\n          </Smooth>\n        )}\n      </Smooth>\n    );\n  }\n\n  static renderContentItem(\n    content: any,\n    nodeProps: TreemapNode,\n    type: string,\n    colorPanel: string[],\n  ): React.ReactElement {\n    if (React.isValidElement(content)) {\n      return React.cloneElement(content, nodeProps);\n    }\n    if (isFunction(content)) {\n      return content(nodeProps);\n    }\n    // optimize default shape\n    const { x, y, width, height, index } = nodeProps;\n    let arrow = null;\n    if (width > 10 && height > 10 && nodeProps.children && type === 'nest') {\n      arrow = (\n        <Polygon\n          points={[\n            { x: x + 2, y: y + height / 2 },\n            { x: x + 6, y: y + height / 2 + 3 },\n            { x: x + 2, y: y + height / 2 + 6 },\n          ]}\n        />\n      );\n    }\n    let text = null;\n    const nameSize = getStringSize(nodeProps.name);\n    if (width > 20 && height > 20 && nameSize.width < width && nameSize.height < height) {\n      text = (\n        <text x={x + 8} y={y + height / 2 + 7} fontSize={14}>\n          {nodeProps.name}\n        </text>\n      );\n    }\n\n    const colors = colorPanel || COLOR_PANEL;\n    return (\n      <g>\n        <Rectangle\n          fill={nodeProps.depth < 2 ? colors[index % colors.length] : 'rgba(255,255,255,0)'}\n          stroke=\"#fff\"\n          {...omit(nodeProps, 'children')}\n          role=\"img\"\n        />\n        {arrow}\n        {text}\n      </g>\n    );\n  }\n\n  renderNode(root: TreemapNode, node: TreemapNode): React.ReactElement {\n    const { content, type } = this.props;\n    const nodeProps = { ...filterProps(this.props, false), ...node, root };\n    const isLeaf = !node.children || !node.children.length;\n\n    const { currentRoot } = this.state;\n    const isCurrentRootChild = (currentRoot.children || []).filter(\n      (item: TreemapNode) => item.depth === node.depth && item.name === node.name,\n    );\n\n    if (!isCurrentRootChild.length && root.depth && type === 'nest') {\n      return null;\n    }\n\n    return (\n      <Layer\n        key={`recharts-treemap-node-${nodeProps.x}-${nodeProps.y}-${nodeProps.name}`}\n        className={`recharts-treemap-depth-${node.depth}`}\n      >\n        {this.renderItem(content, nodeProps, isLeaf)}\n        {node.children && node.children.length\n          ? node.children.map((child: TreemapNode) => this.renderNode(node, child))\n          : null}\n      </Layer>\n    );\n  }\n\n  renderAllNodes(): React.ReactElement {\n    const { formatRoot } = this.state;\n\n    if (!formatRoot) {\n      return null;\n    }\n\n    return this.renderNode(formatRoot, formatRoot);\n  }\n\n  renderTooltip(): React.ReactElement {\n    const { children, nameKey } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (!tooltipItem) {\n      return null;\n    }\n\n    const { width, height } = this.props;\n    const { isTooltipActive, activeNode } = this.state;\n    const viewBox = { x: 0, y: 0, width, height };\n    const coordinate = activeNode\n      ? {\n          x: activeNode.x + activeNode.width / 2,\n          y: activeNode.y + activeNode.height / 2,\n        }\n      : null;\n    const payload =\n      isTooltipActive && activeNode\n        ? [\n            {\n              payload: activeNode,\n              name: getValueByDataKey(activeNode, nameKey, ''),\n              value: getValueByDataKey(activeNode, NODE_VALUE_KEY),\n            },\n          ]\n        : [];\n\n    return React.cloneElement(tooltipItem as React.DetailedReactHTMLElement<any, HTMLElement>, {\n      viewBox,\n      active: isTooltipActive,\n      coordinate,\n      label: '',\n      payload,\n    });\n  }\n\n  // render nest treemap\n  renderNestIndex(): React.ReactElement {\n    const { nameKey, nestIndexContent } = this.props;\n    const { nestIndex } = this.state;\n\n    return (\n      <div className=\"recharts-treemap-nest-index-wrapper\" style={{ marginTop: '8px', textAlign: 'center' }}>\n        {nestIndex.map((item: TreemapNode, i: number) => {\n          // TODO need to verify nameKey type\n          const name = get(item, nameKey as string, 'root');\n          let content = null;\n          if (React.isValidElement(nestIndexContent)) {\n            content = React.cloneElement(nestIndexContent, item, i);\n          }\n          if (isFunction(nestIndexContent)) {\n            content = nestIndexContent(item, i);\n          } else {\n            content = name;\n          }\n\n          return (\n            // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n            <div\n              onClick={this.handleNestIndex.bind(this, item, i)}\n              key={`nest-index-${uniqueId()}`}\n              className=\"recharts-treemap-nest-index-box\"\n              style={{\n                cursor: 'pointer',\n                display: 'inline-block',\n                padding: '0 7px',\n                background: '#000',\n                color: '#fff',\n                marginRight: '3px',\n              }}\n            >\n              {content}\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n\n  render() {\n    if (!validateWidthHeight(this)) {\n      return null;\n    }\n\n    const { width, height, className, style, children, type, ...others } = this.props;\n    const attrs = filterProps(others, false);\n\n    return (\n      <div\n        className={clsx('recharts-wrapper', className)}\n        style={{ ...style, position: 'relative', cursor: 'default', width, height }}\n        role=\"region\"\n      >\n        <Surface {...attrs} width={width} height={type === 'nest' ? height - 30 : height}>\n          {this.renderAllNodes()}\n          {filterSvgElements(children)}\n        </Surface>\n        {this.renderTooltip()}\n        {type === 'nest' && this.renderNestIndex()}\n      </div>\n    );\n  }\n}\n","/**\n * @file TreemapChart\n */\nimport React, { PureComponent, ReactElement, SVGProps } from 'react';\nimport maxBy from 'lodash/maxBy';\nimport min from 'lodash/min';\nimport get from 'lodash/get';\nimport sumBy from 'lodash/sumBy';\nimport isFunction from 'lodash/isFunction';\n\nimport clsx from 'clsx';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Rectangle, Props as RectangleProps } from '../shape/Rectangle';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { filterSvgElements, validateWidthHeight, findChildByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { Margin, DataKey, SankeyLink, SankeyNode } from '../util/types';\n\nconst defaultCoordinateOfTooltip = { x: 0, y: 0 };\n\nconst interpolationGenerator = (a: number, b: number) => {\n  const ka = +a;\n  const kb = b - ka;\n  return (t: any) => ka + kb * t;\n};\nconst centerY = (node: SankeyNode) => node.y + node.dy / 2;\nconst getValue = (entry: LinkDataItem) => (entry && entry.value) || 0;\nconst getSumOfIds = (links: LinkDataItem[], ids: number[]) =>\n  ids.reduce((result: any, id: any) => result + getValue(links[id]), 0);\nconst getSumWithWeightedSource = (tree: any, links: SankeyLink[], ids: number[]) =>\n  ids.reduce((result: any, id: any) => {\n    const link = links[id];\n    const sourceNode = tree[link.source];\n\n    return result + centerY(sourceNode) * getValue(links[id]);\n  }, 0);\nconst getSumWithWeightedTarget = (tree: any, links: SankeyLink[], ids: number[]) =>\n  ids.reduce((result: number, id: number) => {\n    const link = links[id];\n    const targetNode = tree[link.target];\n\n    return result + centerY(targetNode) * getValue(links[id]);\n  }, 0);\nconst ascendingY = (a: any, b: any) => a.y - b.y;\n\nconst searchTargetsAndSources = (links: LinkDataItem[], id: number) => {\n  const sourceNodes: number[] = [];\n  const sourceLinks: number[] = [];\n  const targetNodes: number[] = [];\n  const targetLinks: number[] = [];\n\n  for (let i = 0, len = links.length; i < len; i++) {\n    const link = links[i];\n\n    if (link.source === id) {\n      targetNodes.push(link.target);\n      targetLinks.push(i);\n    }\n\n    if (link.target === id) {\n      sourceNodes.push(link.source);\n      sourceLinks.push(i);\n    }\n  }\n\n  return { sourceNodes, sourceLinks, targetLinks, targetNodes };\n};\n\nconst updateDepthOfTargets = (tree: any, curNode: any) => {\n  const { targetNodes } = curNode;\n\n  for (let i = 0, len = targetNodes.length; i < len; i++) {\n    const target = tree[targetNodes[i]];\n\n    if (target) {\n      target.depth = Math.max(curNode.depth + 1, target.depth);\n\n      updateDepthOfTargets(tree, target);\n    }\n  }\n};\n\nconst getNodesTree = ({ nodes, links }: SankeyData, width: number, nodeWidth: number): any => {\n  const tree = nodes.map((entry: any, index: number) => {\n    const result = searchTargetsAndSources(links, index);\n\n    return {\n      ...entry,\n      ...result,\n      value: Math.max(getSumOfIds(links, result.sourceLinks), getSumOfIds(links, result.targetLinks)),\n      depth: 0,\n    };\n  });\n\n  for (let i = 0, len = tree.length; i < len; i++) {\n    const node = tree[i];\n\n    if (!node.sourceNodes.length) {\n      updateDepthOfTargets(tree, node);\n    }\n  }\n  const maxDepth = maxBy(tree, (entry: SankeyNode) => entry.depth).depth;\n\n  if (maxDepth >= 1) {\n    const childWidth = (width - nodeWidth) / maxDepth;\n    for (let i = 0, len = tree.length; i < len; i++) {\n      const node = tree[i];\n\n      if (!node.targetNodes.length) {\n        node.depth = maxDepth;\n      }\n      node.x = node.depth * childWidth;\n      node.dx = nodeWidth;\n    }\n  }\n\n  return { tree, maxDepth };\n};\n\nconst getDepthTree = (tree: any): any[] => {\n  const result = [];\n\n  for (let i = 0, len = tree.length; i < len; i++) {\n    const node = tree[i];\n\n    if (!result[node.depth]) {\n      result[node.depth] = [];\n    }\n\n    result[node.depth].push(node);\n  }\n\n  return result;\n};\n\nconst updateYOfTree = (depthTree: any, height: number, nodePadding: number, links: any) => {\n  const yRatio: number = min(\n    depthTree.map((nodes: any) => (height - (nodes.length - 1) * nodePadding) / sumBy(nodes, getValue)),\n  );\n\n  for (let d = 0, maxDepth = depthTree.length; d < maxDepth; d++) {\n    for (let i = 0, len = depthTree[d].length; i < len; i++) {\n      const node = depthTree[d][i];\n\n      node.y = i;\n      node.dy = node.value * yRatio;\n    }\n  }\n\n  return links.map((link: any) => ({ ...link, dy: getValue(link) * yRatio }));\n};\n\nconst resolveCollisions = (depthTree: any[], height: number, nodePadding: number, sort = true) => {\n  for (let i = 0, len = depthTree.length; i < len; i++) {\n    const nodes = depthTree[i];\n    const n = nodes.length;\n\n    // Sort by the value of y\n    if (sort) {\n      nodes.sort(ascendingY);\n    }\n\n    let y0 = 0;\n    for (let j = 0; j < n; j++) {\n      const node = nodes[j];\n      const dy = y0 - node.y;\n\n      if (dy > 0) {\n        node.y += dy;\n      }\n\n      y0 = node.y + node.dy + nodePadding;\n    }\n\n    y0 = height + nodePadding;\n    for (let j = n - 1; j >= 0; j--) {\n      const node = nodes[j];\n      const dy = node.y + node.dy + nodePadding - y0;\n\n      if (dy > 0) {\n        node.y -= dy;\n        y0 = node.y;\n      } else {\n        break;\n      }\n    }\n  }\n};\n\nconst relaxLeftToRight = (tree: any, depthTree: any, links: any, alpha: any) => {\n  for (let i = 0, maxDepth = depthTree.length; i < maxDepth; i++) {\n    const nodes = depthTree[i];\n\n    for (let j = 0, len = nodes.length; j < len; j++) {\n      const node = nodes[j];\n\n      if (node.sourceLinks.length) {\n        const sourceSum = getSumOfIds(links, node.sourceLinks);\n        const weightedSum = getSumWithWeightedSource(tree, links, node.sourceLinks);\n        const y = weightedSum / sourceSum;\n\n        node.y += (y - centerY(node)) * alpha;\n      }\n    }\n  }\n};\nconst relaxRightToLeft = (tree: any, depthTree: any, links: any, alpha: any) => {\n  for (let i = depthTree.length - 1; i >= 0; i--) {\n    const nodes = depthTree[i];\n\n    for (let j = 0, len = nodes.length; j < len; j++) {\n      const node = nodes[j];\n\n      if (node.targetLinks.length) {\n        const targetSum = getSumOfIds(links, node.targetLinks);\n        const weightedSum = getSumWithWeightedTarget(tree, links, node.targetLinks);\n        const y = weightedSum / targetSum;\n\n        node.y += (y - centerY(node)) * alpha;\n      }\n    }\n  }\n};\nconst updateYOfLinks = (tree: any, links: any) => {\n  for (let i = 0, len = tree.length; i < len; i++) {\n    const node = tree[i];\n    let sy = 0;\n    let ty = 0;\n\n    node.targetLinks.sort((a: any, b: any) => tree[links[a].target].y - tree[links[b].target].y);\n    node.sourceLinks.sort((a: any, b: any) => tree[links[a].source].y - tree[links[b].source].y);\n\n    for (let j = 0, tLen = node.targetLinks.length; j < tLen; j++) {\n      const link = links[node.targetLinks[j]];\n\n      if (link) {\n        link.sy = sy;\n        sy += link.dy;\n      }\n    }\n\n    for (let j = 0, sLen = node.sourceLinks.length; j < sLen; j++) {\n      const link = links[node.sourceLinks[j]];\n\n      if (link) {\n        link.ty = ty;\n        ty += link.dy;\n      }\n    }\n  }\n};\n\nconst computeData = ({\n  data,\n  width,\n  height,\n  iterations,\n  nodeWidth,\n  nodePadding,\n  sort,\n}: {\n  data: SankeyData;\n  width: number;\n  height: number;\n  iterations: any;\n  nodeWidth: number;\n  nodePadding: number;\n  sort: boolean;\n}): {\n  nodes: SankeyNode[];\n  links: SankeyLink[];\n} => {\n  const { links } = data;\n  const { tree } = getNodesTree(data, width, nodeWidth);\n  const depthTree = getDepthTree(tree);\n  const newLinks = updateYOfTree(depthTree, height, nodePadding, links);\n\n  resolveCollisions(depthTree, height, nodePadding, sort);\n\n  let alpha = 1;\n  for (let i = 1; i <= iterations; i++) {\n    relaxRightToLeft(tree, depthTree, newLinks, (alpha *= 0.99));\n\n    resolveCollisions(depthTree, height, nodePadding, sort);\n\n    relaxLeftToRight(tree, depthTree, newLinks, alpha);\n\n    resolveCollisions(depthTree, height, nodePadding, sort);\n  }\n\n  updateYOfLinks(tree, newLinks);\n\n  return { nodes: tree, links: newLinks };\n};\n\nconst getCoordinateOfTooltip = (el: any, type: string) => {\n  if (type === 'node') {\n    return { x: el.x + el.width / 2, y: el.y + el.height / 2 };\n  }\n\n  return {\n    x: (el.sourceX + el.targetX) / 2,\n    y: (el.sourceY + el.targetY) / 2,\n  };\n};\n\nconst getPayloadOfTooltip = (el: any, type: string, nameKey: DataKey<any>) => {\n  const { payload } = el;\n  if (type === 'node') {\n    return [\n      {\n        payload: el,\n        name: getValueByDataKey(payload, nameKey, ''),\n        value: getValueByDataKey(payload, 'value'),\n      },\n    ];\n  }\n  if (payload.source && payload.target) {\n    const sourceName = getValueByDataKey(payload.source, nameKey, '');\n    const targetName = getValueByDataKey(payload.target, nameKey, '');\n\n    return [\n      {\n        payload: el,\n        name: `${sourceName} - ${targetName}`,\n        value: getValueByDataKey(payload, 'value'),\n      },\n    ];\n  }\n\n  return [];\n};\n\ninterface LinkDataItem {\n  source: number;\n  target: number;\n  [key: string]: any;\n}\n\ninterface SankeyData {\n  nodes: any[];\n  links: LinkDataItem[];\n}\n\ntype SankeyNodeOptions = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | RectangleProps;\n\ntype SankeyLinkOptions =\n  | ReactElement<SVGElement>\n  | ((props: any) => ReactElement<SVGElement>)\n  | SVGProps<SVGPathElement>;\n\ninterface SankeyProps {\n  nameKey?: DataKey<any>;\n\n  dataKey?: DataKey<any>;\n\n  width?: number;\n\n  height?: number;\n\n  data: SankeyData;\n\n  nodePadding?: number;\n\n  nodeWidth?: number;\n\n  linkCurvature?: number;\n\n  iterations?: number;\n\n  // TODO object  func\n  node?: SankeyNodeOptions;\n\n  link?: SankeyLinkOptions;\n\n  style?: any;\n\n  className?: string;\n\n  children?: any;\n\n  margin?: Margin;\n\n  onClick?: any;\n\n  onMouseEnter?: any;\n\n  onMouseLeave?: any;\n\n  sort?: boolean;\n}\n\ntype Props = SVGProps<SVGElement> & SankeyProps;\n\ninterface State {\n  activeElement?: any;\n  activeElementType?: any;\n  isTooltipActive: boolean;\n  nodes: SankeyNode[];\n  links: SankeyLink[];\n  sort?: boolean;\n\n  prevData?: SankeyData;\n  prevWidth?: number;\n  prevHeight?: number;\n  prevMargin?: Margin;\n  prevIterations?: number;\n  prevNodeWidth?: number;\n  prevNodePadding?: number;\n  prevSort?: boolean;\n}\n\nexport class Sankey extends PureComponent<Props, State> {\n  static displayName = 'Sankey';\n\n  static defaultProps = {\n    nameKey: 'name',\n    dataKey: 'value',\n    nodePadding: 10,\n    nodeWidth: 10,\n    linkCurvature: 0.5,\n    iterations: 32,\n    margin: { top: 5, right: 5, bottom: 5, left: 5 },\n    sort: true,\n  };\n\n  state = {\n    activeElement: null as any,\n    activeElementType: null as any,\n    isTooltipActive: false,\n    nodes: [] as SankeyNode[],\n    links: [] as SankeyLink[],\n  };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State): State {\n    const { data, width, height, margin, iterations, nodeWidth, nodePadding, sort } = nextProps;\n\n    if (\n      data !== prevState.prevData ||\n      width !== prevState.prevWidth ||\n      height !== prevState.prevHeight ||\n      !shallowEqual(margin, prevState.prevMargin) ||\n      iterations !== prevState.prevIterations ||\n      nodeWidth !== prevState.prevNodeWidth ||\n      nodePadding !== prevState.prevNodePadding ||\n      sort !== prevState.sort\n    ) {\n      const contentWidth = width - ((margin && margin.left) || 0) - ((margin && margin.right) || 0);\n      const contentHeight = height - ((margin && margin.top) || 0) - ((margin && margin.bottom) || 0);\n      const { links, nodes } = computeData({\n        data,\n        width: contentWidth,\n        height: contentHeight,\n        iterations,\n        nodeWidth,\n        nodePadding,\n        sort,\n      });\n\n      return {\n        ...prevState,\n        nodes,\n        links,\n\n        prevData: data,\n        prevWidth: iterations,\n        prevHeight: height,\n        prevMargin: margin,\n        prevNodePadding: nodePadding,\n        prevNodeWidth: nodeWidth,\n        prevIterations: iterations,\n        prevSort: sort,\n      };\n    }\n\n    return null;\n  }\n\n  handleMouseEnter(el: React.ReactElement, type: string, e: any) {\n    const { onMouseEnter, children } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (tooltipItem) {\n      this.setState(\n        prev => {\n          if (tooltipItem.props.trigger === 'hover') {\n            return { ...prev, activeElement: el, activeElementType: type, isTooltipActive: true };\n          }\n          return prev;\n        },\n        () => {\n          if (onMouseEnter) {\n            onMouseEnter(el, type, e);\n          }\n        },\n      );\n    } else if (onMouseEnter) {\n      onMouseEnter(el, type, e);\n    }\n  }\n\n  handleMouseLeave(el: React.ReactElement, type: string, e: any) {\n    const { onMouseLeave, children } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (tooltipItem) {\n      this.setState(\n        prev => {\n          if (tooltipItem.props.trigger === 'hover') {\n            return { ...prev, activeElement: undefined, activeElementType: undefined, isTooltipActive: false };\n          }\n          return prev;\n        },\n        () => {\n          if (onMouseLeave) {\n            onMouseLeave(el, type, e);\n          }\n        },\n      );\n    } else if (onMouseLeave) {\n      onMouseLeave(el, type, e);\n    }\n  }\n\n  handleClick(el: React.ReactElement, type: string, e: any) {\n    const { onClick, children } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (tooltipItem && tooltipItem.props.trigger === 'click') {\n      if (this.state.isTooltipActive) {\n        this.setState(prev => {\n          return {\n            ...prev,\n            activeElement: undefined as any,\n            activeElementType: undefined as any,\n            isTooltipActive: false,\n          };\n        });\n      } else {\n        this.setState(prev => {\n          return {\n            ...prev,\n            activeElement: el,\n            activeElementType: type,\n            isTooltipActive: true,\n          };\n        });\n      }\n    }\n\n    if (onClick) onClick(el, type, e);\n  }\n\n  static renderLinkItem(option: any, props: any) {\n    if (React.isValidElement(option)) {\n      return React.cloneElement(option, props);\n    }\n    if (isFunction(option)) {\n      return option(props);\n    }\n\n    const { sourceX, sourceY, sourceControlX, targetX, targetY, targetControlX, linkWidth, ...others } = props;\n\n    return (\n      <path\n        className=\"recharts-sankey-link\"\n        d={`\n          M${sourceX},${sourceY}\n          C${sourceControlX},${sourceY} ${targetControlX},${targetY} ${targetX},${targetY}\n        `}\n        fill=\"none\"\n        stroke=\"#333\"\n        strokeWidth={linkWidth}\n        strokeOpacity=\"0.2\"\n        {...filterProps(others, false)}\n      />\n    );\n  }\n\n  renderLinks(links: SankeyLink[], nodes: SankeyNode[]) {\n    const { linkCurvature, link: linkContent, margin } = this.props;\n    const top = get(margin, 'top') || 0;\n    const left = get(margin, 'left') || 0;\n\n    return (\n      <Layer className=\"recharts-sankey-links\" key=\"recharts-sankey-links\">\n        {links.map((link: SankeyLink, i: number) => {\n          const { sy: sourceRelativeY, ty: targetRelativeY, dy: linkWidth } = link;\n          const source = nodes[link.source];\n          const target = nodes[link.target];\n          const sourceX = source.x + source.dx + left;\n          const targetX = target.x + left;\n          const interpolationFunc = interpolationGenerator(sourceX, targetX);\n          const sourceControlX = interpolationFunc(linkCurvature);\n          const targetControlX = interpolationFunc(1 - linkCurvature);\n          const sourceY = source.y + sourceRelativeY + linkWidth / 2 + top;\n          const targetY = target.y + targetRelativeY + linkWidth / 2 + top;\n\n          const linkProps = {\n            sourceX,\n            targetX,\n            sourceY,\n            targetY,\n            sourceControlX,\n            targetControlX,\n            sourceRelativeY,\n            targetRelativeY,\n            linkWidth,\n            index: i,\n            payload: { ...link, source, target },\n            ...filterProps(linkContent, false),\n          };\n          const events = {\n            onMouseEnter: this.handleMouseEnter.bind(this, linkProps, 'link'),\n            onMouseLeave: this.handleMouseLeave.bind(this, linkProps, 'link'),\n            onClick: this.handleClick.bind(this, linkProps, 'link'),\n          };\n\n          return (\n            <Layer key={`link-${link.source}-${link.target}-${link.value}`} {...events}>\n              {(this.constructor as any).renderLinkItem(linkContent, linkProps)}\n            </Layer>\n          );\n        })}\n      </Layer>\n    );\n  }\n\n  static renderNodeItem(option: any, props: Props) {\n    if (React.isValidElement(option)) {\n      return React.cloneElement(option, props);\n    }\n    if (isFunction(option)) {\n      return option(props);\n    }\n\n    return (\n      <Rectangle\n        className=\"recharts-sankey-node\"\n        fill=\"#0088fe\"\n        fillOpacity=\"0.8\"\n        {...filterProps(props, false)}\n        role=\"img\"\n      />\n    );\n  }\n\n  renderNodes(nodes: SankeyNode[]) {\n    const { node: nodeContent, margin } = this.props;\n    const top = get(margin, 'top') || 0;\n    const left = get(margin, 'left') || 0;\n\n    return (\n      <Layer className=\"recharts-sankey-nodes\" key=\"recharts-sankey-nodes\">\n        {nodes.map((node, i) => {\n          const { x, y, dx, dy } = node;\n          const nodeProps = {\n            ...filterProps(nodeContent, false),\n            x: x + left,\n            y: y + top,\n            width: dx,\n            height: dy,\n            index: i,\n            payload: node,\n          };\n          const events = {\n            onMouseEnter: this.handleMouseEnter.bind(this, nodeProps, 'node'),\n            onMouseLeave: this.handleMouseLeave.bind(this, nodeProps, 'node'),\n            onClick: this.handleClick.bind(this, nodeProps, 'node'),\n          };\n\n          return (\n            <Layer key={`node-${node.x}-${node.y}-${node.value}`} {...events}>\n              {(this.constructor as any).renderNodeItem(nodeContent, nodeProps)}\n            </Layer>\n          );\n        })}\n      </Layer>\n    );\n  }\n\n  renderTooltip(): ReactElement {\n    const { children, width, height, nameKey } = this.props;\n    const tooltipItem = findChildByType(children, Tooltip);\n\n    if (!tooltipItem) {\n      return null;\n    }\n\n    const { isTooltipActive, activeElement, activeElementType } = this.state;\n    const viewBox = { x: 0, y: 0, width, height };\n    const coordinate = activeElement\n      ? getCoordinateOfTooltip(activeElement, activeElementType)\n      : defaultCoordinateOfTooltip;\n    const payload = activeElement ? getPayloadOfTooltip(activeElement, activeElementType, nameKey) : [];\n\n    return React.cloneElement(tooltipItem, {\n      viewBox,\n      active: isTooltipActive,\n      coordinate,\n      label: '',\n      payload,\n    });\n  }\n\n  render() {\n    if (!validateWidthHeight(this)) {\n      return null;\n    }\n\n    const { width, height, className, style, children, ...others } = this.props;\n    const { links, nodes } = this.state;\n    const attrs = filterProps(others, false);\n\n    return (\n      <div\n        className={clsx('recharts-wrapper', className)}\n        style={{ ...style, position: 'relative', cursor: 'default', width, height }}\n        role=\"region\"\n      >\n        <Surface {...attrs} width={width} height={height}>\n          {filterSvgElements(children)}\n          {this.renderLinks(links, nodes)}\n          {this.renderNodes(nodes)}\n        </Surface>\n        {this.renderTooltip()}\n      </div>\n    );\n  }\n}\n","/**\n * @fileOverview Radar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Radar } from '../polar/Radar';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\n\nexport const RadarChart = generateCategoricalChart({\n  chartName: 'RadarChart',\n  GraphicalChild: Radar,\n  axisComponents: [\n    { axisType: 'angleAxis', AxisComp: PolarAngleAxis },\n    { axisType: 'radiusAxis', AxisComp: PolarRadiusAxis },\n  ],\n  formatAxisMap,\n  defaultProps: {\n    layout: 'centric',\n    startAngle: 90,\n    endAngle: -270,\n    cx: '50%',\n    cy: '50%',\n    innerRadius: 0,\n    outerRadius: '80%',\n  },\n});\n","/**\n * @fileOverview Scatter Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Scatter } from '../cartesian/Scatter';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { ZAxis } from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const ScatterChart = generateCategoricalChart({\n  chartName: 'ScatterChart',\n  GraphicalChild: Scatter,\n  defaultTooltipEventType: 'item',\n  validateTooltipEventTypes: ['item'],\n  axisComponents: [\n    { axisType: 'xAxis', AxisComp: XAxis },\n    { axisType: 'yAxis', AxisComp: YAxis },\n    { axisType: 'zAxis', AxisComp: ZAxis },\n  ],\n  formatAxisMap,\n});\n","/**\n * @fileOverview Area Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const AreaChart = generateCategoricalChart({\n  chartName: 'AreaChart',\n  GraphicalChild: Area,\n  axisComponents: [\n    { axisType: 'xAxis', AxisComp: XAxis },\n    { axisType: 'yAxis', AxisComp: YAxis },\n  ],\n  formatAxisMap,\n});\n","/**\n * @fileOverview Radar Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { RadialBar } from '../polar/RadialBar';\n\nexport const RadialBarChart = generateCategoricalChart({\n  chartName: 'RadialBarChart',\n  GraphicalChild: RadialBar,\n  legendContent: 'children',\n  defaultTooltipEventType: 'axis',\n  validateTooltipEventTypes: ['axis', 'item'],\n  axisComponents: [\n    { axisType: 'angleAxis', AxisComp: PolarAngleAxis },\n    { axisType: 'radiusAxis', AxisComp: PolarRadiusAxis },\n  ],\n  formatAxisMap,\n  defaultProps: {\n    layout: 'radial',\n    startAngle: 0,\n    endAngle: 360,\n    cx: '50%',\n    cy: '50%',\n    innerRadius: 0,\n    outerRadius: '80%',\n  },\n});\n","/**\n * @fileOverview Composed Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { Bar } from '../cartesian/Bar';\nimport { Line } from '../cartesian/Line';\nimport { Scatter } from '../cartesian/Scatter';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { ZAxis } from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\n\nexport const ComposedChart = generateCategoricalChart({\n  chartName: 'ComposedChart',\n  GraphicalChild: [Line, Area, Bar, Scatter],\n  axisComponents: [\n    { axisType: 'xAxis', AxisComp: XAxis },\n    { axisType: 'yAxis', AxisComp: YAxis },\n    { axisType: 'zAxis', AxisComp: ZAxis },\n  ],\n  formatAxisMap,\n});\n","import React, { useState } from 'react';\nimport { scaleLinear } from 'victory-vendor/d3-scale';\nimport clsx from 'clsx';\nimport { findChildByType } from '../util/ReactUtils';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Sector } from '../shape/Sector';\nimport { Text } from '../component/Text';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { Tooltip } from '../component/Tooltip';\n\nexport interface SunburstData {\n  [key: string]: any;\n  name: string;\n  value?: number;\n  fill?: string;\n  children?: SunburstData[];\n}\n\ninterface TextOptions {\n  fontFamily?: string;\n  fontWeight?: string;\n  paintOrder?: string;\n  stroke?: string;\n  fill?: string;\n  fontSize?: string;\n  pointerEvents?: string;\n}\n\nexport interface SunburstChartProps {\n  className?: string;\n  data?: SunburstData;\n  width?: number;\n  height?: number;\n  padding?: number;\n  dataKey?: string;\n  /* Padding between each hierarchical level. */\n  ringPadding?: number;\n  /* The radius of the inner circle at the center of the chart. */\n  innerRadius?: number;\n  /* Outermost edge of the chart. Defaults to the max possible radius for a circle inscribed in the chart container */\n  outerRadius?: number;\n  /** The abscissa of pole in polar coordinate  */\n  cx?: number;\n  /** The ordinate of pole in polar coordinate  */\n  cy?: number;\n  /** Angle in degrees from which the chart should start.  */\n  startAngle?: number;\n  /** Angle, in degrees, at which the chart should end. Can be used to generate partial sunbursts.  */\n  endAngle?: number;\n  children?: React.ReactNode;\n  fill?: string;\n  stroke?: string;\n  /* an object with svg text options to control the appearance of the chart labels. */\n  textOptions?: TextOptions;\n\n  onMouseEnter?: (node: SunburstData, e: React.MouseEvent) => void;\n\n  onMouseLeave?: (node: SunburstData, e: React.MouseEvent) => void;\n\n  onClick?: (node: SunburstData) => void;\n}\n\ninterface DrawArcOptions {\n  radius: number;\n  innerR: number;\n  initialAngle: number;\n  childColor?: string;\n}\n\nconst defaultTextProps = {\n  fontWeight: 'bold',\n  paintOrder: 'stroke fill',\n  fontSize: '.75rem',\n  stroke: '#FFF',\n  fill: 'black',\n  pointerEvents: 'none',\n};\n\nfunction getMaxDepthOf(node: SunburstData): number {\n  if (!node.children || node.children.length === 0) return 1;\n\n  // Calculate depth for each child and find the maximum\n  const childDepths = node.children.map(d => getMaxDepthOf(d));\n  return 1 + Math.max(...childDepths);\n}\n\nexport const SunburstChart = ({\n  className,\n  data,\n  children,\n  width,\n  height,\n  padding = 2,\n  dataKey = 'value',\n  ringPadding = 2,\n  innerRadius = 50,\n  fill = '#333',\n  stroke = '#FFF',\n  textOptions = defaultTextProps,\n  outerRadius = Math.min(width, height) / 2,\n  cx = width / 2,\n  cy = height / 2,\n  startAngle = 0,\n  endAngle = 360,\n  onClick,\n  onMouseEnter,\n  onMouseLeave,\n}: SunburstChartProps) => {\n  const [isTooltipActive, setIsTooltipActive] = useState(false);\n  const [activeNode, setActiveNode] = useState<SunburstData | null>(null);\n\n  const rScale = scaleLinear([0, data[dataKey]], [0, endAngle]);\n  const treeDepth = getMaxDepthOf(data);\n  const thickness = (outerRadius - innerRadius) / treeDepth;\n\n  const sectors: React.ReactNode[] = [];\n  const positions = new Map([]);\n\n  // event handlers\n  function handleMouseEnter(node: SunburstData, e: React.MouseEvent) {\n    if (onMouseEnter) onMouseEnter(node, e);\n    setActiveNode(node);\n\n    setIsTooltipActive(true);\n  }\n\n  function handleMouseLeave(node: SunburstData, e: React.MouseEvent) {\n    if (onMouseLeave) onMouseLeave(node, e);\n    setActiveNode(null);\n    setIsTooltipActive(false);\n  }\n\n  function handleClick(node: SunburstData) {\n    if (onClick) onClick(node);\n  }\n\n  // recursively add nodes for each data point and its children\n  function drawArcs(childNodes: SunburstData[] | undefined, options: DrawArcOptions): any {\n    const { radius, innerR, initialAngle, childColor } = options;\n\n    let currentAngle = initialAngle;\n\n    if (!childNodes) return; // base case: no children of this node\n\n    childNodes.forEach(d => {\n      const arcLength = rScale(d[dataKey]);\n      const start = currentAngle;\n      // color priority - if there's a color on the individual point use that, otherwise use parent color or default\n      const fillColor = d?.fill ?? childColor ?? fill;\n      const { x: textX, y: textY } = polarToCartesian(0, 0, innerR + radius / 2, -(start + arcLength - arcLength / 2));\n      currentAngle += arcLength;\n      sectors.push(\n        // TODO: Missing key warning. Can we use `key={d.name}`?\n        <g aria-label={d.name} tabIndex={0}>\n          <Sector\n            onClick={() => handleClick(d)}\n            onMouseEnter={e => handleMouseEnter(d, e)}\n            onMouseLeave={e => handleMouseLeave(d, e)}\n            fill={fillColor}\n            stroke={stroke}\n            strokeWidth={padding}\n            startAngle={start}\n            endAngle={start + arcLength}\n            innerRadius={innerR}\n            outerRadius={innerR + radius}\n            cx={cx}\n            cy={cy}\n          />\n          <Text {...textOptions} alignmentBaseline=\"middle\" textAnchor=\"middle\" x={textX + cx} y={cy - textY}>\n            {d[dataKey]}\n          </Text>\n        </g>,\n      );\n\n      const { x: tooltipX, y: tooltipY } = polarToCartesian(cx, cy, innerR + radius / 2, start);\n      positions.set(d.name, { x: tooltipX, y: tooltipY });\n\n      return drawArcs(d.children, {\n        radius,\n        innerR: innerR + radius + ringPadding,\n        initialAngle: start,\n        childColor: fillColor,\n      });\n    });\n  }\n\n  drawArcs(data.children, { radius: thickness, innerR: innerRadius, initialAngle: startAngle });\n\n  const layerClass = clsx('recharts-sunburst', className);\n\n  function renderTooltip() {\n    const tooltipComponent = findChildByType([children], Tooltip);\n\n    if (!tooltipComponent || !activeNode) return null;\n\n    const viewBox = { x: 0, y: 0, width, height };\n\n    return React.cloneElement(tooltipComponent as React.DetailedReactHTMLElement<any, HTMLElement>, {\n      viewBox,\n      coordinate: positions.get(activeNode.name),\n      payload: [activeNode],\n      active: isTooltipActive,\n    });\n  }\n\n  return (\n    <div className={clsx('recharts-wrapper', className)} style={{ position: 'relative', width, height }} role=\"region\">\n      <Surface width={width} height={height}>\n        {children}\n        <Layer className={layerClass}>{sectors}</Layer>\n      </Surface>\n      {renderTooltip()}\n    </div>\n  );\n};\n","import React, { SVGProps } from 'react';\nimport { FunnelProps, FunnelTrapezoidItem } from '../numberAxis/Funnel';\nimport { Props as TrapezoidProps } from '../shape/Trapezoid';\nimport { Shape, getPropsFromShapeOption } from './ActiveShapeUtils';\n\n// Trapezoid props is expecting x, y, height as numbers.\n// When props are being spread in from a user defined component in Funnel,\n// the prop types of an SVGElement have these typed as string | number.\n// This function will return the passed in props along with x, y, height as numbers.\nexport function typeGuardTrapezoidProps(option: SVGProps<SVGPathElement>, props: FunnelTrapezoidItem): TrapezoidProps {\n  const xValue = `${props.x || option.x}`;\n  const x = parseInt(xValue, 10);\n  const yValue = `${props.y || option.y}`;\n  const y = parseInt(yValue, 10);\n  const heightValue = `${props?.height || option?.height}`;\n  const height = parseInt(heightValue, 10);\n  return {\n    ...props,\n    ...getPropsFromShapeOption(option),\n    height,\n    x,\n    y,\n  };\n}\n\ntype FunnelTrapezoidProps = { option: FunnelProps['activeShape'] } & FunnelTrapezoidItem;\n\nexport function FunnelTrapezoid(props: FunnelTrapezoidProps) {\n  return <Shape shapeType=\"trapezoid\" propTransformer={typeGuardTrapezoidProps} {...props} />;\n}\n","/**\n * @fileOverview Render sectors of a funnel\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\nimport omit from 'lodash/omit';\nimport isEqual from 'lodash/isEqual';\n\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Props as TrapezoidProps } from '../shape/Trapezoid';\nimport { LabelList } from '../component/LabelList';\nimport { Cell, Props as CellProps } from '../component/Cell';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { interpolateNumber } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport {\n  LegendType,\n  TooltipType,\n  AnimationTiming,\n  ChartOffset,\n  DataKey,\n  adaptEventsOfChild,\n  PresentationAttributesAdaptChildEvent,\n  AnimationDuration,\n  ActiveShape,\n} from '../util/types';\nimport { FunnelTrapezoid } from '../util/FunnelUtils';\n\nexport interface FunnelTrapezoidItem extends TrapezoidProps {\n  value?: number | string;\n  payload?: any;\n  isActive: boolean;\n}\n\ninterface InternalFunnelProps {\n  className?: string;\n  dataKey: DataKey<any>;\n  nameKey?: DataKey<any>;\n  data?: any[];\n  hide?: boolean;\n  shape?: ActiveShape<FunnelTrapezoidItem, SVGPathElement>;\n  activeShape?: ActiveShape<FunnelTrapezoidItem, SVGPathElement>;\n  legendType?: LegendType;\n  tooltipType?: TooltipType;\n  activeIndex?: number | number[];\n  lastShapeType?: 'triangle' | 'rectangle';\n  reversed?: boolean;\n\n  onAnimationStart?: () => void;\n  onAnimationEnd?: () => void;\n\n  isAnimationActive?: boolean;\n  animateNewValues?: boolean;\n  animationBegin?: number;\n  animationDuration?: AnimationDuration;\n  animationEasing?: AnimationTiming;\n  id?: string;\n  trapezoids?: FunnelTrapezoidItem[];\n  animationId?: number;\n}\n\nexport type FunnelProps = PresentationAttributesAdaptChildEvent<any, SVGElement> & TrapezoidProps & InternalFunnelProps;\n\ninterface State {\n  readonly prevTrapezoids?: FunnelTrapezoidItem[];\n  readonly curTrapezoids?: FunnelTrapezoidItem[];\n  readonly prevAnimationId?: number;\n  readonly isAnimationFinished?: boolean;\n}\n\nexport class Funnel extends PureComponent<FunnelProps, State> {\n  static displayName = 'Funnel';\n\n  static defaultProps = {\n    stroke: '#fff',\n    fill: '#808080',\n    legendType: 'rect',\n    labelLine: true,\n    hide: false,\n    isAnimationActive: !Global.isSsr,\n    animationBegin: 400,\n    animationDuration: 1500,\n    animationEasing: 'ease',\n    nameKey: 'name',\n    lastShapeType: 'triangle',\n  };\n\n  static getRealFunnelData = (item: Funnel) => {\n    const { data, children } = item.props;\n    const presentationProps = filterProps(item.props, false);\n    const cells = findAllByType(children, Cell);\n\n    if (data && data.length) {\n      return data.map((entry: any, index: number) => ({\n        payload: entry,\n        ...presentationProps,\n        ...entry,\n        ...(cells && cells[index] && cells[index].props),\n      }));\n    }\n\n    if (cells && cells.length) {\n      return cells.map((cell: ReactElement<CellProps>) => ({ ...presentationProps, ...cell.props }));\n    }\n\n    return [];\n  };\n\n  static getRealWidthHeight = (item: Funnel, offset: ChartOffset) => {\n    const customWidth = item.props.width;\n    const { width, height, left, right, top, bottom } = offset;\n    const realHeight = height;\n    let realWidth = width;\n\n    if (isNumber(customWidth)) {\n      realWidth = customWidth;\n    } else if (isString(customWidth)) {\n      realWidth = (realWidth * parseFloat(customWidth)) / 100;\n    }\n\n    return {\n      realWidth: realWidth - left - right - 50,\n      realHeight: realHeight - bottom - top,\n      offsetX: (width - realWidth) / 2,\n      offsetY: (height - realHeight) / 2,\n    };\n  };\n\n  static getComposedData = ({ item, offset }: { item: Funnel; offset: ChartOffset }) => {\n    const funnelData = Funnel.getRealFunnelData(item);\n    const { dataKey, nameKey, tooltipType, lastShapeType, reversed } = item.props;\n    const { left, top } = offset;\n    const { realHeight, realWidth, offsetX, offsetY } = Funnel.getRealWidthHeight(item, offset);\n    const maxValue = Math.max.apply(\n      null,\n      funnelData.map((entry: any) => getValueByDataKey(entry, dataKey, 0)),\n    );\n    const len = funnelData.length;\n    const rowHeight = realHeight / len;\n    const parentViewBox = { x: offset.left, y: offset.top, width: offset.width, height: offset.height };\n\n    let trapezoids = funnelData.map((entry: any, i: number) => {\n      const rawVal = getValueByDataKey(entry, dataKey, 0);\n      const name = getValueByDataKey(entry, nameKey, i);\n      let val = rawVal;\n      let nextVal;\n\n      if (i !== len - 1) {\n        nextVal = getValueByDataKey(funnelData[i + 1], dataKey, 0);\n\n        if (nextVal instanceof Array) {\n          [nextVal] = nextVal;\n        }\n      } else if (rawVal instanceof Array && rawVal.length === 2) {\n        [val, nextVal] = rawVal;\n      } else if (lastShapeType === 'rectangle') {\n        nextVal = val;\n      } else {\n        nextVal = 0;\n      }\n\n      const x = ((maxValue - val) * realWidth) / (2 * maxValue) + top + 25 + offsetX;\n      const y = rowHeight * i + left + offsetY;\n      const upperWidth = (val / maxValue) * realWidth;\n      const lowerWidth = (nextVal / maxValue) * realWidth;\n\n      const tooltipPayload = [{ name, value: val, payload: entry, dataKey, type: tooltipType }];\n      const tooltipPosition = {\n        x: x + upperWidth / 2,\n        y: y + rowHeight / 2,\n      };\n\n      return {\n        x,\n        y,\n        width: Math.max(upperWidth, lowerWidth),\n        upperWidth,\n        lowerWidth,\n        height: rowHeight,\n        name,\n        val,\n        tooltipPayload,\n        tooltipPosition,\n        ...omit(entry, 'width'),\n        payload: entry,\n        parentViewBox,\n        labelViewBox: {\n          x: x + (upperWidth - lowerWidth) / 4,\n          y,\n          width: Math.abs(upperWidth - lowerWidth) / 2 + Math.min(upperWidth, lowerWidth),\n          height: rowHeight,\n        },\n      };\n    });\n\n    if (reversed) {\n      trapezoids = trapezoids.map((entry: any, index: number) => {\n        const newY = entry.y - index * rowHeight + (len - 1 - index) * rowHeight;\n        return {\n          ...entry,\n          upperWidth: entry.lowerWidth,\n          lowerWidth: entry.upperWidth,\n          x: entry.x - (entry.lowerWidth - entry.upperWidth) / 2,\n          y: entry.y - index * rowHeight + (len - 1 - index) * rowHeight,\n          tooltipPosition: { ...entry.tooltipPosition, y: newY + rowHeight / 2 },\n          labelViewBox: {\n            ...entry.labelViewBox,\n            y: newY,\n          },\n        };\n      });\n    }\n\n    return {\n      trapezoids,\n      data: funnelData,\n    };\n  };\n\n  state: State = { isAnimationFinished: false };\n\n  static getDerivedStateFromProps(nextProps: FunnelProps, prevState: State): State {\n    if (nextProps.animationId !== prevState.prevAnimationId) {\n      return {\n        prevAnimationId: nextProps.animationId,\n        curTrapezoids: nextProps.trapezoids,\n        prevTrapezoids: prevState.curTrapezoids,\n      };\n    }\n    if (nextProps.trapezoids !== prevState.curTrapezoids) {\n      return {\n        curTrapezoids: nextProps.trapezoids,\n      };\n    }\n\n    return null;\n  }\n\n  handleAnimationEnd = () => {\n    const { onAnimationEnd } = this.props;\n    this.setState({ isAnimationFinished: true });\n\n    if (isFunction(onAnimationEnd)) {\n      onAnimationEnd();\n    }\n  };\n\n  handleAnimationStart = () => {\n    const { onAnimationStart } = this.props;\n    this.setState({ isAnimationFinished: false });\n\n    if (isFunction(onAnimationStart)) {\n      onAnimationStart();\n    }\n  };\n\n  isActiveIndex(i: number) {\n    const { activeIndex } = this.props;\n\n    if (Array.isArray(activeIndex)) {\n      return activeIndex.indexOf(i) !== -1;\n    }\n\n    return i === activeIndex;\n  }\n\n  renderTrapezoidsStatically(trapezoids: FunnelTrapezoidItem[]) {\n    const { shape, activeShape } = this.props;\n\n    return trapezoids.map((entry, i) => {\n      const trapezoidOptions = this.isActiveIndex(i) ? activeShape : shape;\n      const trapezoidProps = {\n        ...entry,\n        isActive: this.isActiveIndex(i),\n        stroke: entry.stroke,\n      };\n\n      return (\n        <Layer\n          className=\"recharts-funnel-trapezoid\"\n          {...adaptEventsOfChild(this.props, entry, i)}\n          key={`trapezoid-${entry?.x}-${entry?.y}-${entry?.name}-${entry?.value}`}\n          role=\"img\"\n        >\n          <FunnelTrapezoid option={trapezoidOptions} {...trapezoidProps} />\n        </Layer>\n      );\n    });\n  }\n\n  renderTrapezoidsWithAnimation() {\n    const { trapezoids, isAnimationActive, animationBegin, animationDuration, animationEasing, animationId } =\n      this.props;\n    const { prevTrapezoids } = this.state;\n\n    return (\n      <Animate\n        begin={animationBegin}\n        duration={animationDuration}\n        isActive={isAnimationActive}\n        easing={animationEasing}\n        from={{ t: 0 }}\n        to={{ t: 1 }}\n        key={`funnel-${animationId}`}\n        onAnimationStart={this.handleAnimationStart}\n        onAnimationEnd={this.handleAnimationEnd}\n      >\n        {({ t }: { t: number }) => {\n          const stepData = trapezoids.map((entry: any, index: number) => {\n            const prev = prevTrapezoids && prevTrapezoids[index];\n\n            if (prev) {\n              const interpolatorX = interpolateNumber(prev.x, entry.x);\n              const interpolatorY = interpolateNumber(prev.y, entry.y);\n              const interpolatorUpperWidth = interpolateNumber(prev.upperWidth, entry.upperWidth);\n              const interpolatorLowerWidth = interpolateNumber(prev.lowerWidth, entry.lowerWidth);\n              const interpolatorHeight = interpolateNumber(prev.height, entry.height);\n\n              return {\n                ...entry,\n                x: interpolatorX(t),\n                y: interpolatorY(t),\n                upperWidth: interpolatorUpperWidth(t),\n                lowerWidth: interpolatorLowerWidth(t),\n                height: interpolatorHeight(t),\n              };\n            }\n\n            const interpolatorX = interpolateNumber(entry.x + entry.upperWidth / 2, entry.x);\n            const interpolatorY = interpolateNumber(entry.y + entry.height / 2, entry.y);\n            const interpolatorUpperWidth = interpolateNumber(0, entry.upperWidth);\n            const interpolatorLowerWidth = interpolateNumber(0, entry.lowerWidth);\n            const interpolatorHeight = interpolateNumber(0, entry.height);\n\n            return {\n              ...entry,\n              x: interpolatorX(t),\n              y: interpolatorY(t),\n              upperWidth: interpolatorUpperWidth(t),\n              lowerWidth: interpolatorLowerWidth(t),\n              height: interpolatorHeight(t),\n            };\n          });\n          return <Layer>{this.renderTrapezoidsStatically(stepData)}</Layer>;\n        }}\n      </Animate>\n    );\n  }\n\n  renderTrapezoids() {\n    const { trapezoids, isAnimationActive } = this.props;\n    const { prevTrapezoids } = this.state;\n\n    if (\n      isAnimationActive &&\n      trapezoids &&\n      trapezoids.length &&\n      (!prevTrapezoids || !isEqual(prevTrapezoids, trapezoids))\n    ) {\n      return this.renderTrapezoidsWithAnimation();\n    }\n    return this.renderTrapezoidsStatically(trapezoids);\n  }\n\n  render() {\n    const { hide, trapezoids, className, isAnimationActive } = this.props;\n    const { isAnimationFinished } = this.state;\n\n    if (hide || !trapezoids || !trapezoids.length) {\n      return null;\n    }\n\n    const layerClass = clsx('recharts-trapezoids', className);\n\n    return (\n      <Layer className={layerClass}>\n        {this.renderTrapezoids()}\n        {(!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, trapezoids)}\n      </Layer>\n    );\n  }\n}\n","/**\n * @fileOverview Funnel Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Funnel } from '../numberAxis/Funnel';\n\nexport const FunnelChart = generateCategoricalChart({\n  chartName: 'FunnelChart',\n  GraphicalChild: Funnel,\n  validateTooltipEventTypes: ['item'],\n  defaultTooltipEventType: 'item',\n  axisComponents: [],\n  defaultProps: {\n    layout: 'centric',\n  },\n});\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__741__","__WEBPACK_EXTERNAL_MODULE__9660__","__WEBPACK_EXTERNAL_MODULE__4020__","globalScope","ONE","MAX_DIGITS","Decimal","precision","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","Math","floor","mathpow","pow","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","MAX_E","P","add","x","y","carry","d","e","i","k","len","xd","yd","Ctor","constructor","pr","s","round","slice","length","ceil","reverse","push","unshift","pop","checkInt32","min","max","Error","digitsToString","ws","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","r","wpr","ln","minus","sub","subtract","modulo","mod","q","times","naturalExponential","exp","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","sqrt","n","t","toExponential","indexOf","toString","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","replace","search","substring","charCodeAt","rd","doRound","xdi","xe","xLTy","isExp","arr","config","obj","p","v","ps","clone","value","test","prototype","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","set","hasOwnProperty","has","Object","prefix","Events","EE","fn","context","once","addListener","emitter","event","TypeError","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","events","name","names","call","getOwnPropertySymbols","concat","listeners","handlers","l","ee","Array","listenerCount","emit","a1","a2","a3","a4","a5","args","arguments","removeListener","undefined","apply","on","removeAllListeners","off","prefixed","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","clear","entry","get","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","Set","setCacheAdd","setCacheHas","SetCache","values","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","data","size","Symbol","Uint8Array","WeakMap","func","thisArg","array","iteratee","predicate","resIndex","result","baseIndexOf","comparator","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","key","offset","string","split","baseAssignValue","object","objValue","copyObject","keys","source","keysIn","defineProperty","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","tag","isFunc","stacked","forEach","subValue","props","objectCreate","baseCreate","proto","baseForOwn","baseEach","createBaseEach","collection","isSymbol","current","computed","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","path","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","other","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isFunction","isMasked","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","nativeKeysIn","isProto","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","nativeCeil","nativeMax","start","end","step","overRest","setToString","constant","baseSetToString","comparer","sort","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","includes","isCommon","seen","outer","seenIndex","last","parent","cache","stringToPath","baseSlice","arrayBuffer","byteLength","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","copy","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","exec","lastIndex","symbolValueOf","symbol","typedArray","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","isNew","newValue","getSymbols","getSymbolsIn","coreJsData","eachFunc","iterable","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","trailing","join","findIndexFunc","baseRange","isIterateeCall","toFinite","noop","isPlainObject","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","message","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","flatten","freeGlobal","g","baseGetAllKeys","isKeyable","map","baseIsNative","getValue","getPrototype","overArg","getPrototypeOf","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","ctorString","hasFunc","reHasUnicode","nativeCreate","input","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","spreadableSymbol","isConcatSpreadable","reIsUint","type","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","splice","getMapData","memoize","freeProcess","process","nodeUtil","types","binding","transform","arg","otherArgs","freeSelf","self","shortOut","nativeNow","Date","now","count","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","match","number","quote","subString","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","nativeMin","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","arrayEvery","baseEvery","guard","find","createFind","defaultValue","baseHasIn","hasPath","baseIsArguments","stubFalse","baseIsMap","nodeIsMap","isNumber","objectCtorString","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseKeysIn","baseExtremum","baseGt","resolver","memoized","Cache","baseLt","baseUnset","customOmitClone","flatRest","omit","paths","CLONE_DEEP_FLAG","baseProperty","basePropertyDeep","range","createRange","baseSome","baseOrderBy","baseRest","sortBy","baseSum","debounce","INFINITY","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","baseUniq","upperFirst","createCaseFirst","u","for","f","h","m","$$typeof","isFragment","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","definition","o","enumerable","globalThis","window","prop","nmd","children","mathSign","isPercent","isString","lodashIsNumber","isNan","isNumOrStr","idCounter","uniqueId","getPercentValue","percent","totalValue","validate","parseFloat","getAnyElementOfObject","interpolateNumber","numberA","numberB","findEntryInArray","ary","specifiedKey","specifiedValue","shallowEqual","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","svg","polygon","polyline","EventKeys","adaptEventHandlers","newHandler","inputProps","isValidElement","out","adaptEventsOfChild","_typeof","item","originalHandler","getEventHandlerOfChild","REACT_BROWSER_EVENT_MAP","click","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","contextmenu","dblclick","getDisplayName","Comp","displayName","lastChildren","lastResult","toArray","Children","child","isNil","findAllByType","childType","findChildByType","validateWidthHeight","el","_el$props","width","height","SVG_TAGS","isSvgElement","hasClipDot","dot","filterSvgElements","svgElements","filterProps","includeEvents","svgElementType","_inputProps","_FilteredElementKeyMa","matchingElementTypeKeys","isValidSpreadableProp","isChildrenEqual","nextChildren","prevChildren","isSingleChildEqual","nextChild","prevChild","_ref","nextProps","_objectWithoutProperties","_excluded","_ref2","prevProps","_excluded2","renderByOrder","renderMap","elements","record","_ref3","handler","results","Surface","viewBox","className","style","title","desc","others","svgView","layerClass","clsx","React","_extends","Layer","ref","warn","condition","format","_len","_key","atan2","cos","sin","pi","PI","tau","draw","moveTo","arc","lineTo","closePath","tan30","tan30_2","rect","kr","kx","ky","sqrt3","x0","y0","x1","y1","y2","tauEpsilon","append","strings","_","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","a0","ccw","dx","dy","cw","da","withPath","shape","RangeError","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","symbolFactory","_ref$type","_ref$size","_ref$sizeType","sizeType","_objectSpread","cx","cy","filteredProps","getSymbolFactory","circle","shapeSymbol","angle","calculateAreaSize","registerSymbol","SIZE","DefaultLegendContent","_PureComponent","_classCallCheck","_callSuper","_inherits","inactiveColor","halfSize","sixthSize","thirdSize","color","inactive","strokeWidth","fill","stroke","strokeDasharray","payload","legendIcon","iconProps","_this","_this$props","iconSize","layout","formatter","itemStyle","display","marginRight","svgStyle","verticalAlign","finalFormatter","_defineProperty","entryValue","renderIcon","_this$props2","align","finalStyle","padding","margin","textAlign","renderItems","PureComponent","getUniqPayload","option","defaultUniqBy","uniqBy","Legend","chartWidth","defaultProps","updateBBox","wrapperNode","getBoundingClientRect","box","offsetHeight","offsetWidth","onBBoxUpdate","getBBox","lastBoundingBox","hPos","vPos","chartHeight","left","right","getBBoxSnapshot","top","bottom","_this2","content","wrapperStyle","payloadUniqBy","outerStyle","position","getDefaultPosition","node","otherProps","renderContent","defaultFormatter","DefaultTooltipContent","_props$separator","separator","_props$contentStyle","contentStyle","_props$itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","label","labelFormatter","_props$accessibilityL","accessibilityLayer","backgroundColor","border","whiteSpace","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","role","items","finalItemStyle","paddingTop","paddingBottom","finalValue","finalName","formatted","_formatted","_slicedToArray","unit","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","visibility","getTooltipCSSClassName","coordinate","translateX","translateY","getTooltipTranslateXY","allowEscapeViewBox","offsetTopLeft","reverseDirection","tooltipDimension","viewBoxDimension","negative","positive","TooltipBoundingBox","dismissed","dismissedAtCoordinate","_this$props$coordinat","_this$props$coordinat2","_this$props$coordinat3","_this$props$coordinat4","setState","state","document","addEventListener","handleKeyDown","removeEventListener","_this$props$coordinat5","_this$props$coordinat6","active","animationDuration","animationEasing","hasPayload","isAnimationActive","useTranslate3d","_getTooltipTranslate","_ref4","tooltipBox","cssProperties","getTransformStyle","cssClasses","getTooltipTranslate","transition","pointerEvents","tabIndex","Global","isSsr","createElement","dataKey","Tooltip","filterNull","finalPayload","filter","hide","includeHidden","cursor","cursorStyle","trigger","ResponsiveContainer","forwardRef","aspect","_ref$initialDimension","initialDimension","_ref$width","_ref$height","_ref$minWidth","minWidth","minHeight","maxHeight","_ref$debounce","onResize","_ref$style","containerRef","useRef","onResizeRef","useImperativeHandle","console","configurable","_useState2","useState","containerWidth","containerHeight","sizes","setSizes","setContainerSize","useCallback","newWidth","newHeight","prevState","roundedWidth","roundedHeight","useEffect","callback","_onResizeRef$current","_entries$0$contentRec","contentRect","throttle","observer","ResizeObserver","_containerRef$current","observe","disconnect","chartContent","useMemo","calculatedWidth","calculatedHeight","isCharts","endsWith","cloneElement","maxWidth","Cell","_props","stringCache","widthCache","cacheCount","SPAN_STYLE","MEASUREMENT_SPAN_ID","getStringSize","text","copyObj","copyStyle","cacheKey","JSON","stringify","measurementSpan","getElementById","setAttribute","body","appendChild","measurementSpanStyle","assign","textContent","MULTIPLY_OR_DIVIDE_REGEX","ADD_OR_SUBTRACT_REGEX","CSS_LENGTH_UNIT_REGEX","NUM_SPLIT_REGEX","CONVERSION_RATES","cm","mm","pt","pc","in","Q","px","FIXED_CSS_LENGTH_UNITS","STR_NAN","DecimalCSS","num","Number","isNaN","NaN","convertToPx","_NUM_SPLIT_REGEX$exec","numStr","calculateArithmetic","expr","newExpr","_MULTIPLY_OR_DIVIDE_R","leftOperand","operator","rightOperand","lTs","parse","rTs","multiply","_ADD_OR_SUBTRACT_REGE","_ref6","PARENTHESES_REGEX","evaluateExpression","expression","parentheticalExpression","calculateParentheses","reduceCSSCalc","safeEvaluateExpression","BREAKING_SPACES","calculateWordWidths","breakAll","words","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","scaleToFit","maxLines","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","calculate","reduce","currentLine","newLine","originalResult","trimmedResult","checkOverflow","tempText","doesOverflow","findLongestLine","iterations","middle","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","DEFAULT_FILL","Text","_ref5","_ref5$x","propsX","_ref5$y","propsY","_ref5$lineHeight","lineHeight","_ref5$capHeight","capHeight","_ref5$scaleToFit","_ref5$textAnchor","textAnchor","_ref5$verticalAnchor","verticalAnchor","_ref5$fill","wordsByLines","textProps","startDy","transforms","line","initRange","domain","initInterpolator","interpolator","InternMap","keyof","super","defineProperties","_intern","intern_get","intern_set","delete","intern_delete","implicit","ordinal","unknown","scale","from","band","bandwidth","ordinalRange","r0","r1","paddingInner","paddingOuter","rescale","stop","rangeRound","pointish","point","e10","e5","e2","tickSpec","power","log10","error","factor","i1","i2","inc","ticks","tickIncrement","tickStep","ascending","descending","bisector","compare1","compare2","delta","lo","hi","mid","zero","center","ascendingBisect","bisectRight","extend","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","trim","toLowerCase","rgbn","Rgb","rgba","hsla","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","channels","displayable","formatHex8","formatHsl","clamp","linear","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","colors","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","one","date","isView","normalize","bimap","interpolate","d0","d1","polymap","bisect","target","transformer","untransform","piecewise","output","clamper","invert","continuous","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","comma","formatDecimalParts","coefficient","toLocaleString","formatRounded","toUpperCase","formatPrefix","prefixes","locale","grouping","thousands","group","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","i0","formatTrim","Infinity","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","interval","transformLog","transformExp","transformLogn","transformExpn","pow10","isFinite","reflect","loggish","logs","pows","E","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","radial","squared","unsquare","valueof","compareDefined","swap","quantile","Float64Array","numbers","value0","subarray","quantileSorted","thresholds","invertExtent","quantiles","quantize","threshold","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","t0","timeInterval","floori","offseti","field","previous","every","millisecond","second","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","utcTime","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","r2","I","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","order","s0","s1","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","X","utcParse","formatLocale","stackValue","stackSeries","iter","iterator","minLen","arr2","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","_len2","restArgs","_key2","newArgs","curry","begin","compose","_len3","_key3","fns","firstFn","tailsFn","res","_len4","_key4","newA","uninterpolateNumber","diff","uninterpolateTruncation","rangeStep","getDigitCount","_arr","_n","_d","_e","_s","_i","next","done","err","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","_ref7","_ref8","_getValidInterval6","invariant","ErrorBar","_React$Component","dataPointFormatter","xAxis","yAxis","svgProps","direction","errorBars","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","xMid","coordinates","getLegendProps","formattedGraphicalItems","legendWidth","legendContent","legendItem","legendData","legendDefaultProps","legendProps","sectors","iconType","legendType","itemDefaultProps","itemProps","getMainColorOfGraphicItem","getWithHeight","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","flatMap","_item$type","defaultedProps","getDomainOfErrorBars","axisType","errorBarChild","isErrorBarRelevantForAxis","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","getDomainOfItemsWithSameAxis","domains","isCategoricalAxis","getCoordinatesOfGrid","minValue","maxValue","syncWithTicks","hasMin","hasMax","getTicksOfAxis","axis","isGrid","isAll","duplicateDomain","offsetForBand","realScaleType","niceTicks","scaleContent","row","isCategorical","categoricalDomain","handlerWeakMap","combineEventHandlers","defaultHandler","childHandler","childWeakMap","combineHandler","parseScale","chartType","hasBar","d3Scales","EPS","checkDomainOfScale","first","findPositionOfBar","barPosition","truncateByDomain","STACK_OFFSET_MAP","expand","none","stackOffsetNone","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","offsetAccessor","oz","sz","shapeStack","stackOrderNone","getTicksOfScale","opts","originalDomain","scaleType","tickValues","getCateCoordinateOfLine","bandSize","allowDuplicatedCategory","matchedTick","getCateCoordinateOfBar","getBaseValueOfBar","numericAxis","getDomainOfStackGroups","stackGroups","startIndex","endIndex","stackId","stackedData","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","cur","prev","parseDomainOfCategoryAxis","calculatedDomain","axisChild","isEqual","getTooltipItem","graphicalItem","tooltipType","radianToDegree","angleInRadian","polarToCartesian","radius","getMaxRadius","formatAxisMap","axisMap","chartName","startAngle","endAngle","maxRadius","innerRadius","outerRadius","reversed","_range2","_parseScale","finalAxis","getAngleOfPoint","anotherPoint","distanceBetweenPoints","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","inRange","_formatAngleOfSector","formatAngleOfSector","formatAngle","getTickClassName","tick","getLabel","renderRadialLabel","labelProps","attrs","labelAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","getAttrsOfPolarLabel","midAngle","_polarToCartesian","_polarToCartesian2","getAttrsOfCartesianLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","sizeAttrs","isPolar","Label","_ref4$offset","_props$className","textBreakAll","isPolarLabel","positionAttrs","parseViewBox","labelViewBox","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","parseLabel","_toConsumableArray","defaultAccessor","LabelList","_ref$valueAccessor","valueAccessor","restProps","idProps","parseLabelList","Customized","component","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","Sector","sectorProps","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","that","_context","Basis","BasisClosed","BasisOpen","areaStart","_line","areaEnd","lineStart","_point","lineEnd","_x2","_x3","_x4","_y2","_y3","_y4","Bump","_x","LinearClosed","Linear","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t","defined","curve","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","_t0","_y","py","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","getPath","lineFunction","_ref$points","points","baseLine","_ref$connectNulls","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","shapeArea","shapeLine","Curve","pathRef","realPath","getOwnPropertyNames","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","hasOwn","sameValueZeroEqual","OWNER","getOwnPropertyDescriptor","areArraysEqual","areDatesEqual","getTime","areMapsEqual","aResult","bResult","matchedIndices","aIterable","bIterable","hasMatch","matchIndex","_a","aKey","aValue","_b","bKey","bValue","areObjectsEqual","properties","areObjectsEqualStrict","descriptorA","descriptorB","writable","arePrimitiveWrappersEqual","areRegExpsEqual","flags","areSetsEqual","areTypedArraysEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","bind","deepEqual","createCustomEqual","strict","circular","createInternalComparator","createCustomInternalComparator","createState","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createEqualityComparatorConfig","then","createEqualityComparator","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","meta","createIsEqual","setRafTimeout","timeout","currTime","requestAnimationFrame","shouldUpdate","safeRequestAnimationFrame","_toArray","createAnimateManager","handleChange","shouldStop","setStyle","_style","_styles","curr","restStyles","subscribe","_handleChange","getOwnPropertyDescriptors","hint","prim","toPrimitive","param","mapObject","getTransitionVal","duration","easing","return","ACCURACY","cubicBezierFactor","c1","c2","multyTime","params","pre","cubicBezier","configBezier","_easing$1$split$0$spl2","curveX","curveY","derCurveX","newParams","rangeValue","bezier","evalT","derVal","isStepper","configEasing","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","configSpring","alpha","needContinue","to","calStepperVals","preVals","steps","nextStepVals","_easing2","velocity","render","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","cafId","update","currStyle","cancelAnimationFrame","excluded","sourceKeys","sourceSymbolKeys","descriptor","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","Super","NewTarget","ReferenceError","Animate","subClass","superClass","Constructor","protoProps","staticProps","_super","instance","isActive","attributeName","handleStyleChange","changeStyle","canBegin","mounted","runAnimation","_this$props3","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","newState","onAnimationEnd","unSubscribe","onAnimationStart","startAnimation","configUpdate","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","newStyle","propsTo","runStepAnimation","_this$props4","onAnimationReStart","stateStyle","cloneContainer","container","_container$props","_container$props$styl","only","propTypes","isRequired","_inheritsLoose","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","isLeaving","exit","enter","TransitionGroup","handleExited","contextValue","isMounting","firstRender","_proto","componentDidMount","componentWillUnmount","getDerivedStateFromProps","appear","currentChildMapping","Component","childFactory","TransitionGroupContext","Provider","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","status","nextCallback","updateStatus","componentDidUpdate","nextStatus","cancelNextCallback","getTimeouts","mounting","nodeRef","scrollTop","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","nextState","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","contextType","parseDurationOfSingleTransition","AnimateGroupChild","_Component","isAppearing","appearOptions","enterOptions","handleStyleActive","leaveOptions","handleEnter","handleExit","parseTimeout","AnimateGroup","leave","getRectanglePath","ySign","xSign","newRadius","isInRectangle","minX","maxX","minY","maxY","isUpdateAnimationActive","animationBegin","Rectangle","rectangleProps","totalLength","setTotalLength","getTotalLength","pathTotalLength","currWidth","currHeight","currY","isValidatePoint","getSinglePolygonPath","segmentPoints","getParsedPoints","segPoints","polygonPath","Polygon","baseLinePoints","hasStroke","rangePath","outerPath","getRanglePath","singlePath","Dot","Cross","_ref$x","_ref$y","_ref$top","_ref$left","getPolygonPath","polarAngles","PolarAngles","radialLines","polarAnglesProps","ConcentricCircle","concentricCircleProps","ConcentricPolygon","concentricPolygonProps","ConcentricPath","polarRadius","gridType","PolarGrid","_ref$cx","_ref$cy","_ref$innerRadius","_ref$outerRadius","_ref$gridType","_ref$radialLines","PolarRadiusAxis","orientation","maxRadiusTick","maxBy","minBy","axisLine","extent","point0","point1","tickFormatter","getTickTextAnchor","axisProps","customTickProps","coord","getTickValueCoord","tickProps","renderTickItem","_this$props5","renderAxisLine","renderTicks","getViewBox","radiusAxisId","eps","PolarAngleAxis","tickLineSize","tickSize","p1","p2","axisLineType","tickLine","tickLineProps","lineCoord","getTickLineCoord","angleAxisId","getTrapezoidPath","upperWidth","lowerWidth","widthGap","Trapezoid","trapezoidProps","currUpperWidth","currLowerWidth","defaultPropTransformer","ShapeSelector","shapeType","elementProps","_elementProps","isSymbolsProps","getPropsFromShapeOption","Shape","_ref2$propTransformer","propTransformer","_ref2$activeClassName","activeClassName","isBoolean","isFunnel","_item","isPie","isScatter","compareFunnel","shapeData","activeTooltipItem","_activeTooltipItem$la","_activeTooltipItem$la2","xMatches","yMatches","comparePie","startAngleMatches","endAngleMatches","compareScatter","zMatches","getActiveShapeIndexForTooltip","itemData","shapeKey","activeItem","getShapeDataKey","tooltipPayload","_activeItem$tooltipPa","_activeItem$tooltipPa2","getActiveShapeTooltipPayload","activeItemMatches","datum","dataIndex","valuesMatch","mouseCoordinateMatches","comparison","getComparisonFn","indexOfMouseCoordinates","Pie","isAnimationFinished","prevIsAnimationActive","prevAnimationId","animationId","sectorToFocus","curSectors","prevSectors","alignmentBaseline","activeIndex","labelLine","valueKey","pieProps","customLabelProps","customLabelLineProps","offsetRadius","labels","getTextAnchor","lineProps","realDataKey","renderLabelLineItem","renderLabelItem","activeShape","blendStroke","inactiveShapeProp","inactiveShape","isActiveIndex","hasActiveIndex","sectorOptions","sectorRefs","_this$state","handleAnimationStart","handleAnimationEnd","stepData","curAngle","paddingAngle","angleIp","latest","interpolatorAngle","renderSectorsStatically","pieRef","onkeydown","altKey","focus","blur","renderSectorsWithAnimation","attachKeyboardHandlers","_this5","rootTabIndex","renderSectors","renderLabels","_Pie","minAngle","nameKey","presentationProps","cells","cell","maxPieRadius","pieData","getRealPieData","parseCoordinateOfPie","parseDeltaAngle","absDeltaAngle","notZeroItemCount","realTotalAngle","tempStartAngle","middleRadius","tooltipPosition","Radar","onMouseEnter","onMouseLeave","curPoints","prevPoints","dotItem","dotProps","baseProps","customDotProps","dots","renderDotItem","radar","isRange","handleMouseEnter","handleMouseLeave","renderDots","prevPointsDiffFactor","interpolatorX","interpolatorY","renderPolygonStatically","renderPolygonWithAnimation","renderPolygon","parseCornerRadius","typeGuardSectorProps","cxValue","cyValue","RadialBarSector","activeDot","radiusAxis","angleAxis","displayedData","angleBandSize","pointValue","baseValue","RadialBar","curData","prevData","interpolatorStartAngle","interpolatorEndAngle","backgroundProps","background","rest","renderBackground","minPointSize","radiusAxisTicks","angleAxisTicks","dataStartIndex","pos","_item$props","stackedDomain","backgroundSector","PREFIX_LIST","isTouch","changedTouches","Brush","leaveTimer","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDrag","onDragEnd","detachDragEndListener","handleDragEnd","leaveTimeOut","isTextActive","slideMoveStartX","pageX","attachDragEndListener","travellerDragStartHandlers","startX","handleTravellerDragStart","endX","scaleValues","gap","minIndex","getIndexInRange","maxIndex","travellerWidth","onChange","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$state2","prevValue","_this$state3","currentScaleValue","currentIndex","newScaleValue","_this$props6","_this$props7","chartElement","compact","travellerX","_data$startIndex","_data$endIndex","_this$props8","traveller","ariaLabel","travellerProps","ariaLabelBrush","handleEnterSlideOrTraveller","handleLeaveSlideOrTraveller","onMouseDown","onTouchStart","onKeyDown","preventDefault","stopPropagation","handleTravellerMoveKeyboard","onFocus","isTravellerFocused","onBlur","renderTraveller","_this$props9","handleSlideDragStart","fillOpacity","_this$props10","_this$state4","getTextOfTick","_this$props11","alwaysShowText","_this$state5","isPanoramic","camelName","generatePrefixStyle","handleLeaveWrapper","onTouchMove","handleTouchMove","renderPanorama","renderSlide","renderTravellerLayer","renderText","lineY","renderDefaultTraveller","updateId","prevUpdateId","prevTravellerWidth","prevX","prevWidth","scalePoint","createScale","valueRange","ifOverflowMatches","alwaysShow","ifOverflow","typeguardBarRectangleProps","xProp","yProp","xValue","yValue","heightValue","widthValue","BarRectangle","Bar","activeBar","interpolatorWidth","interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","needClip","clipPathId","errorBarItems","dataPoint","errorBarProps","clipPath","needClipX","needClipY","renderRectangles","renderErrorBar","_Bar","xAxisId","yAxisId","xAxisTicks","yAxisTicks","minPointSizeProp","rects","isValueNumber","minPointSizeCallback","baseValueScale","currentValueScale","computedHeight","ids","leftMirror","rightMirror","topMirror","bottomMirror","calculatedPadding","needSpace","_axis$padding","mirror","offsetKey","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","barCategoryGap","halfBand","rectWithPoints","ScaleHelper","bandAware","createLabeledScales","scales","mapValues","isInRange","getAngledRectangleWidth","normalizedAngle","normalizeAngle","angleRadians","angleThreshold","atan","angledWidth","calculateViewBox","XAxisContext","createContext","YAxisContext","ViewBoxContext","OffsetContext","ClipPathIdContext","ChartHeightContext","ChartWidthContext","ChartLayoutContextProvider","_props$state","xAxisMap","yAxisMap","useXAxisOrThrow","useContext","useArbitraryXAxis","useYAxisWithFiniteDomainOrRandom","useYAxisOrThrow","useOffset","useChartWidth","useChartHeight","ReferenceLineImpl","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","xAxisOrientation","yAxisOrientation","yCoord","xCoord","some","getEndPoints","_endPoints","_endPoints$","_endPoints$2","renderLine","rectWithCoords","ReferenceLine","isFront","ReferenceDot","isX","isY","getCoordinate","renderDot","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","rangeMin","rangeMax","getRect","renderRect","getEveryNthWithCondition","isValid","isVisible","tickPosition","getSize","getTicks","fontSize","letterSpacing","minTickGap","getNumberIntervalTicks","candidates","sizeKey","unitSize","getTickSize","contentSize","getAngledTickWidth","boundaries","isWidth","getTickBoundaries","_ret","initialStart","stepsize","_loop","tickCoord","isShow","getEquidistantTicks","preserveEnd","tail","tailSize","tailGap","_loop2","getTicksStart","getTicksEnd","CartesianAxis","viewBoxOld","restPropsOld","htmlLayer","layerReference","getElementsByClassName","getComputedStyle","tx","ty","tickMargin","finalTickSize","needHeight","needWidth","finalTicks","getTickVerticalAnchor","_this2$getTickLineCoo","visibleTicksCount","ticksGenerator","noTicksProps","_excluded3","Background","ry","renderLineItem","lineItem","_filterProps","restOfFilteredProps","HorizontalGridLines","_props$horizontal","horizontal","horizontalPoints","lineItemProps","VerticalGridLines","_props$vertical","vertical","verticalPoints","HorizontalStripes","horizontalFill","_props$horizontal2","roundedSortedHorizontalPoints","colorIndex","VerticalStripes","_props$vertical2","verticalFill","roundedSortedVerticalPoints","defaultVerticalCoordinatesGenerator","defaultHorizontalCoordinatesGenerator","CartesianGrid","_props$stroke","_props$fill","_props$horizontal3","_props$horizontalFill","_props$vertical3","_props$verticalFill","propsIncludingDefaults","horizontalValues","verticalValues","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","isHorizontalValues","generatorResult","isVerticalValues","Line","lines","lineLength","generateSimpleStrokeDasharray","remainLength","restLength","remainLines","emptyLines","repeat","mainCurve","curveDom","clipDot","dotsProps","curveProps","animateNewValues","prevPointIndex","renderCurveStatically","currentStrokeDasharray","curLength","getStrokeDasharray","renderCurveWithAnimation","hasSinglePoint","_ref2$r","_ref2$strokeWidth","_ref3$clipDot","dotSize","renderCurve","linesUnit","Area","areaProps","startY","endY","renderVerticalRect","renderHorizontalRect","prevBaseLine","stepBaseLine","stepPoints","renderAreaStatically","renderClipRect","renderAreaWithAnimation","renderArea","curBaseLine","_Area","chartBaseValue","itemBaseValue","domainMax","domainMin","hasStack","getBaseValue","isHorizontalLayout","isBreakPoint","ZAxis","zAxisId","ScatterSymbol","Scatter","interpolatorCx","interpolatorCy","interpolatorSize","renderSymbolsStatically","renderSymbolsWithAnimation","errorDataKey","linePoints","lineType","lineJointType","scatterProps","customLineProps","_getLinearRegression","xsum","ysum","xysum","xxsum","xmin","xmax","xcurrent","ycurrent","getLinearRegression","linearExp","renderSymbols","XAxisImpl","axisOptions","zAxis","xAxisDataKey","yAxisDataKey","zAxisDataKey","defaultRangeZ","defaultZ","xBandSize","yBandSize","XAxis","YAxisImpl","YAxis","detectReferenceElementsDomain","axisId","specifiedTicks","areas","idKey","finalDomain","key1","key2","value1","value2","eventCenter","SYNC_EVENT","AccessibilityManager","_ref$coordinateList","coordinateList","_ref$container","_ref$layout","_ref$offset","_ref$mouseHandlerCall","mouseHandlerCallback","spoofMouse","_window","_window2","_this$container$getBo","scrollOffsetX","scrollX","scrollOffsetY","scrollY","pageY","getRadialCursorPoints","activeCoordinate","getCursorPoints","innerPoint","outerPoint","Cursor","_element$props$cursor","_defaultProps","element","tooltipEventType","activePayload","activeTooltipIndex","tooltipAxisBandSize","elementPropsCursor","cursorComp","getCursorRectangle","_getRadialCursorPoint","cursorProps","payloadIndex","ORIENT_MAP","FULL_WIDTH_AND_HEIGHT","originCoordinate","renderAsIs","getDisplayedData","graphicalItems","dataEndIndex","itemsData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","_child$props$data","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","_ticks$length","unsortedTicks","before","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","calculateActiveTickIndex","getActiveCoordinate","getAxisMapByAxes","axes","axisIdKey","stackOffset","_childProps$domain2","domainStart","domainEnd","isDomainSpecifiedByUser","defaultDomain","_childProps$domain","childDomain","duplicate","hasDuplicate","errorBarsDomain","parseErrorBarsOfAxis","_defaultProps2","_defaultProps3","itemAxisId","itemHide","axisDomain","getAxisMap","_ref4$axisType","AxisComp","Axis","_defaultProps4","_defaultProps5","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","calculateOffset","prevLegendBBox","_ref5$xAxisMap","_ref5$yAxisMap","offsetH","offsetV","brushBottom","_unused","legendBox","boxWidth","boxHeight","appendOffsetOfLegend","getCartesianAxisSize","axisObj","axisName","generateCategoricalChart","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","getFormatItems","currentState","barSize","barGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasGraphicalBarItem","formattedItems","childMaxBarSize","numericAxisId","cateAxisId","cateAxis","cateTicks","_item$type3","itemIndex","getStackedDataOfItem","itemIsBar","sizeList","globalSize","totalSize","_ref2$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","barItems","barItemDefaultProps","barItemProps","selfSize","cateId","stackList","getBarSizeList","_getBandSizeOfAxis","barBandSize","_ref3$sizeList","realBarGap","initialValue","useFull","fullBarSize","newPosition","newRes","originalSize","getBarPosition","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","reverseStackOrder","_getAxisNameByLayout2","_items","_item$type2","parentGroup","childGroup","getStackGroupsByAxisId","legendBBox","cateAxisMap","ticksObj","CategoricalChartWrapper","_props$id","_props$throttleDelay","cId","syncId","eventEmitterSymbol","syncMethod","applySyncEvent","_ref9","triggerSyncEvent","mouse","getMouseInfo","onMouseMove","persist","throttleTriggeredAfterMouseMove","_mouse","eventName","getReactEventByType","onClick","onMouseUp","handleMouseDown","handleMouseUp","onDoubleClick","onContextMenu","validateChartX","validateChartY","_element$props$active","getTooltipEventType","elementDefaultProps","axisOption","_element$props","radiusAxisMap","angleAxisMap","handleLegendBBoxUpdate","_tooltipItem$props$ac","tooltipItem","_this$state6","handleBrushChange","_this$state7","_element$props2","_element$props2$xAxis","_element$props2$yAxis","_ref10","activePoint","basePoint","itemItemProps","renderActiveDot","filterFormatItem","_this$state8","hasActive","itemEvents","handleItemMouseEnter","handleItemMouseLeave","_this$getItemByXY","_ref11$graphicalItem","getItemByXY","_ref11$graphicalItem$","xyItem","renderActivePoints","renderReferenceElement","renderBrush","renderGraphicChild","Funnel","renderCursor","renderPolarGrid","renderPolarAxis","renderCustomized","triggeredAfterMouseMove","throttleDelay","_this$props$margin$le","_this$props$margin$to","accessibilityManager","setDetails","displayDefaultTooltip","tooltipElem","defaultIndex","independentAxisCoord","dependentAxisCoord","scatterPlotElement","_ref12","setIndex","_this$props$margin$le2","_this$props$margin$to2","shared","eventType","boundingRect","containerOffset","documentElement","clientTop","clientLeft","_this$state9","xScale","yScale","toolTipData","scaledX","scaledY","_this$state10","tooltipEvents","handleClick","handleDoubleClick","handleMouseMove","handleTouchStart","onTouchEnd","handleTouchEnd","handleContextMenu","handleOuterEvent","handleReceiveSyncEvent","_this$state$offset","_ref13","_ref14","_ref15","_ref16","_this$state$xAxisMap","_this$state$yAxisMap","chartXY","_this$state11","itemDisplayName","activeBarItem","_this$props$tabIndex","_this$props$role","renderClipPath","keyboardEvent","parseEventsOfWrapper","renderLegend","renderTooltip","defaultState","prevDataKey","prevHeight","prevLayout","prevStackOffset","prevMargin","keepFromPrevState","updatesToState","_brush$props$startInd","_brush$props","_brush$props$endIndex","_brush$props2","brush","hasDifferentStartOrEndIndex","newUpdateId","CategoricalChart","LineChart","BarChart","PieChart","COLOR_PANEL","NODE_VALUE_KEY","computeNode","nodeValue","childDepth","computedChildren","getWorstScore","parentSize","aspectRatio","parentArea","rowArea","_row$reduce","parentRect","isFlush","rowHeight","curX","horizontalPosition","rowWidth","curY","verticalPosition","squarify","score","filterRect","best","scaleChildren","areaValueRatio","ratio","getAreaOfChildren","tempChildren","activeNode","formatRoot","currentRoot","nestIndex","Treemap","prevType","prevAspectRatio","nodeProps","colorPanel","arrow","nameSize","isLeaf","random","Smooth","renderContentItem","renderItem","renderNode","nestIndexContent","marginTop","handleNestIndex","renderAllNodes","renderNestIndex","defaultCoordinateOfTooltip","centerY","getSumOfIds","links","getSumWithWeightedSource","tree","link","sourceNode","getSumWithWeightedTarget","targetNode","ascendingY","updateDepthOfTargets","curNode","targetNodes","resolveCollisions","depthTree","nodePadding","nodes","relaxLeftToRight","maxDepth","sourceLinks","sourceSum","relaxRightToLeft","targetLinks","targetSum","computeData","nodeWidth","_getNodesTree","sourceNodes","searchTargetsAndSources","childWidth","getNodesTree","getDepthTree","newLinks","yRatio","sumBy","updateYOfTree","sy","tLen","updateYOfLinks","Sankey","activeElement","activeElementType","linkCurvature","linkContent","sourceRelativeY","targetRelativeY","linkWidth","sourceX","targetX","interpolationFunc","ka","kb","interpolationGenerator","sourceControlX","targetControlX","linkProps","sourceY","targetY","renderLinkItem","nodeContent","renderNodeItem","sourceName","targetName","getPayloadOfTooltip","renderLinks","renderNodes","prevIterations","prevNodeWidth","prevNodePadding","contentWidth","contentHeight","_computeData","prevSort","strokeOpacity","RadarChart","ScatterChart","AreaChart","RadialBarChart","ComposedChart","defaultTextProps","fontWeight","paintOrder","getMaxDepthOf","childDepths","SunburstChart","_ref$padding","_ref$dataKey","_ref$ringPadding","ringPadding","_ref$fill","_ref$stroke","_ref$textOptions","textOptions","_ref$startAngle","_ref$endAngle","setIsTooltipActive","_useState4","setActiveNode","rScale","scaleLinear","thickness","positions","drawArcs","childNodes","innerR","initialAngle","childColor","currentAngle","_d$fill","arcLength","fillColor","textX","textY","tooltipX","tooltipY","tooltipComponent","typeGuardTrapezoidProps","FunnelTrapezoid","curTrapezoids","trapezoids","prevTrapezoids","trapezoidOptions","interpolatorUpperWidth","interpolatorLowerWidth","renderTrapezoidsStatically","renderTrapezoidsWithAnimation","renderTrapezoids","_Funnel","lastShapeType","customWidth","realHeight","realWidth","offsetX","offsetY","funnelData","getRealFunnelData","_item$props2","_Funnel$getRealWidthH","getRealWidthHeight","nextVal","rawVal","_rawVal","newY","FunnelChart"],"sourceRoot":""}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists