{"version":3,"file":"static/js/781.a6aae931.js","mappings":"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","sources":["../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../node_modules/big.js/big.js","../../node_modules/call-bind/callBound.js","../../node_modules/call-bind/index.js","../../node_modules/clone/clone.js","../../node_modules/clsx/dist/clsx.m.js","../../node_modules/color-convert/conversions.js","../../node_modules/color-convert/index.js","../../node_modules/color-convert/node_modules/color-name/index.js","../../node_modules/color-convert/route.js","../../node_modules/color-name/index.js","../../node_modules/color-string/color-string.js","../../node_modules/color/index.js","../../node_modules/comma-separated-tokens/index.js","../../node_modules/countup.js/dist/countUp.min.js","../../node_modules/cross-fetch/dist/browser-ponyfill.js","../../node_modules/dayjs/dayjs.min.js","../../node_modules/dayjs/plugin/duration.js","../../node_modules/dayjs/plugin/relativeTime.js","../../node_modules/decimal.js-light/decimal.js","../../node_modules/decode-uri-component/index.js","../../node_modules/define-data-property/index.js","../../node_modules/detect-browser/es/index.js","../../node_modules/dom-helpers/esm/addClass.js","../../node_modules/dom-helpers/esm/hasClass.js","../../node_modules/dom-helpers/esm/removeClass.js","../../node_modules/eventemitter3/index.js","../../node_modules/events/events.js","../../node_modules/extend/index.js","../../node_modules/extract-files/public/ReactNativeFile.js","../../node_modules/extract-files/public/extractFiles.js","../../node_modules/extract-files/public/index.js","../../node_modules/extract-files/public/isExtractableFile.js","../../node_modules/fast-json-stable-stringify/index.js","../../node_modules/filter-obj/index.js","../../node_modules/form-data/lib/browser.js","../../node_modules/function-bind/implementation.js","../../node_modules/function-bind/index.js","../../node_modules/get-intrinsic/index.js","../../node_modules/gopd/index.js","../../node_modules/bignumber.js/bignumber.mjs","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/descending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/number.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-interpolate/src/basis.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/basisClosed.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/numberArray.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-scale/src/band.js","../../node_modules/d3-array/src/range.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/identity.js","../../node_modules/d3-scale/src/nice.js","../../node_modules/d3-scale/src/log.js","../../node_modules/d3-scale/src/symlog.js","../../node_modules/d3-scale/src/pow.js","../../node_modules/d3-scale/src/radial.js","../../node_modules/d3-array/src/max.js","../../node_modules/d3-array/src/min.js","../../node_modules/d3-array/src/sort.js","../../node_modules/d3-array/src/quickselect.js","../../node_modules/d3-array/src/quantile.js","../../node_modules/d3-scale/src/quantile.js","../../node_modules/d3-scale/src/quantize.js","../../node_modules/d3-scale/src/threshold.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/ticks.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-scale/src/time.js","../../node_modules/d3-scale/src/utcTime.js","../../node_modules/d3-scale/src/sequential.js","../../node_modules/d3-scale/src/sequentialQuantile.js","../../node_modules/d3-scale/src/diverging.js","../../node_modules/d3-interpolate/src/piecewise.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/ordinal.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-shape/src/area.js","../../node_modules/d3-shape/src/array.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/curve/basis.js","../../node_modules/d3-shape/src/curve/basisClosed.js","../../node_modules/d3-shape/src/curve/basisOpen.js","../../node_modules/d3-shape/src/curve/bump.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/curve/linearClosed.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/natural.js","../../node_modules/d3-shape/src/curve/step.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/noop.js","../../node_modules/d3-shape/src/offset/expand.js","../../node_modules/d3-shape/src/offset/none.js","../../node_modules/d3-shape/src/offset/silhouette.js","../../node_modules/d3-shape/src/offset/wiggle.js","../../node_modules/d3-shape/src/order/none.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/path.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/stack.js","../../node_modules/d3-shape/src/symbol/asterisk.js","../../node_modules/d3-shape/src/symbol/diamond2.js","../../node_modules/d3-shape/src/symbol/plus.js","../../node_modules/d3-shape/src/symbol/square2.js","../../node_modules/d3-shape/src/symbol/triangle2.js","../../node_modules/d3-shape/src/symbol/times.js","../../node_modules/d3-shape/src/symbol.js","../../node_modules/d3-shape/src/symbol/circle.js","../../node_modules/d3-shape/src/symbol/cross.js","../../node_modules/d3-shape/src/symbol/diamond.js","../../node_modules/d3-shape/src/symbol/square.js","../../node_modules/d3-shape/src/symbol/star.js","../../node_modules/d3-shape/src/symbol/triangle.js","../../node_modules/d3-shape/src/symbol/wye.js","../../node_modules/fancy-canvas/size.mjs","../../node_modules/fancy-canvas/device-pixel-ratio.mjs","../../node_modules/fancy-canvas/canvas-element-bitmap-size.mjs","../../node_modules/fancy-canvas/canvas-rendering-target.mjs","../../node_modules/fast-equals/src/utils.ts","../../node_modules/fast-equals/src/equals.ts","../../node_modules/fast-equals/src/comparator.ts","../../node_modules/fast-equals/src/index.ts","../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs","../../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs","../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../../node_modules/framer-motion/dist/es/easing/ease.mjs","../../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../../node_modules/framer-motion/dist/es/easing/back.mjs","../../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../../node_modules/framer-motion/dist/es/utils/mix-color.mjs","../../node_modules/framer-motion/dist/es/utils/mix-complex.mjs","../../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../../node_modules/framer-motion/dist/es/animation/animators/js/driver-frameloop.mjs","../../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","../../node_modules/framer-motion/dist/es/animation/animators/js/index.mjs","../../node_modules/framer-motion/dist/es/animation/animators/waapi/create-accelerated-animation.mjs","../../node_modules/framer-motion/dist/es/utils/memo.mjs","../../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../../node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs","../../node_modules/framer-motion/dist/es/animation/animators/instant.mjs","../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs","../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs","../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../../node_modules/framer-motion/dist/es/easing/circ.mjs","../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../../node_modules/framer-motion/dist/es/events/event-info.mjs","../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","../../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../../node_modules/framer-motion/dist/es/gestures/hover.mjs","../../node_modules/framer-motion/dist/es/gestures/focus.mjs","../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../../node_modules/framer-motion/dist/es/gestures/press.mjs","../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../../node_modules/framer-motion/dist/es/render/store.mjs","../../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs","../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../../node_modules/framer-motion/dist/es/motion/index.mjs","../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../../node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs","../../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../../node_modules/framer-motion/dist/es/utils/array.mjs","../../node_modules/framer-motion/dist/es/utils/clamp.mjs","../../node_modules/framer-motion/dist/es/utils/errors.mjs","../../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../../node_modules/framer-motion/dist/es/utils/mix.mjs","../../node_modules/framer-motion/dist/es/utils/noop.mjs","../../node_modules/framer-motion/dist/es/utils/pipe.mjs","../../node_modules/framer-motion/dist/es/utils/progress.mjs","../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../../node_modules/framer-motion/dist/es/value/index.mjs","../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../../node_modules/framer-motion/dist/es/value/types/utils.mjs","../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs"],"sourcesContent":["import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","/*\r\n * big.js v5.2.2\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2018 Michael Mclaughlin \r\n * https://github.com/MikeMcl/big.js/LICENCE\r\n */\r\n;(function (GLOBAL) {\r\n 'use strict';\r\n var Big,\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\n DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big.\r\n * (This limit is not enforced or checked.)\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n /*\r\n * Create and return a Big constructor.\r\n *\r\n */\r\n function _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n parse(x, n);\r\n }\r\n\r\n /*\r\n * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which\r\n * points to Object.\r\n */\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.version = '5.2.2';\r\n\r\n return Big;\r\n }\r\n\r\n\r\n /*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\n function parse(x, n) {\r\n var e, i, nl;\r\n\r\n // Minus zero?\r\n if (n === 0 && 1 / n < 0) n = '-0';\r\n else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number');\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round Big x to a maximum of dp decimal places using rounding mode rm.\r\n * Called by stringify, P.div, P.round and P.sqrt.\r\n *\r\n * x {Big} The Big to round.\r\n * dp {number} Integer, 0 to MAX_DP inclusive.\r\n * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\n function round(x, dp, rm, more) {\r\n var xc = x.c,\r\n i = x.e + dp + 1;\r\n\r\n if (i < xc.length) {\r\n if (rm === 1) {\r\n\r\n // xc[i] is the digit after the digit that may be rounded up.\r\n more = xc[i] >= 5;\r\n } else if (rm === 2) {\r\n more = xc[i] > 5 || xc[i] == 5 &&\r\n (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);\r\n } else if (rm === 3) {\r\n more = more || !!xc[0];\r\n } else {\r\n more = false;\r\n if (rm !== 0) throw Error(INVALID_RM);\r\n }\r\n\r\n if (i < 1) {\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = -dp;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else {\r\n\r\n // Remove any digits after the required decimal places.\r\n xc.length = i--;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[i] > 9;) {\r\n xc[i] = 0;\r\n if (!i--) {\r\n ++x.e;\r\n xc.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; !xc[--i];) xc.pop();\r\n }\r\n } else if (rm < 0 || rm > 3 || rm !== ~~rm) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n *\r\n * x {Big}\r\n * id? {number} Caller id.\r\n * 1 toExponential\r\n * 2 toFixed\r\n * 3 toPrecision\r\n * 4 valueOf\r\n * n? {number|undefined} Caller's argument.\r\n * k? {number|undefined}\r\n */\r\n function stringify(x, id, n, k) {\r\n var e, s,\r\n Big = x.constructor,\r\n z = !x.c[0];\r\n\r\n if (n !== UNDEFINED) {\r\n if (n !== ~~n || n < (id == 3) || n > MAX_DP) {\r\n throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);\r\n }\r\n\r\n x = new Big(x);\r\n\r\n // The index of the digit that may be rounded up.\r\n n = k - x.e;\r\n\r\n // Round?\r\n if (x.c.length > ++k) round(x, n, Big.RM);\r\n\r\n // toFixed: recalculate k as x.e may have changed if value rounded up.\r\n if (id == 2) k = x.e + n + 1;\r\n\r\n // Append zeros?\r\n for (; x.c.length < k;) x.c.push(0);\r\n }\r\n\r\n e = x.e;\r\n s = x.c.join('');\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) for (e -= n; e--;) s += '0';\r\n else if (e < n) s = s.slice(0, e) + '.' + s.slice(e);\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && (!z || id == 4) ? '-' + s : s;\r\n }\r\n\r\n\r\n // Prototype/instance methods\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\n P.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\n P.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP);\r\n\r\n // Divisor is zero?\r\n if (!b[0]) throw Error(DIV_BY_ZERO);\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) return new Big(k * 0);\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result\r\n\r\n q.s = k;\r\n k = d < 0 ? 0 : d;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n }\r\n\r\n // Round?\r\n if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\n P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\n 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 Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\n 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 Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\n P.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // y is non-zero? x is non-zero? Or both are zero.\r\n return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\n P.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) throw Error(DIV_BY_ZERO);\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\n P.plus = P.add = function (y) {\r\n var t,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero? y is non-zero? x is non-zero? Or both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0);\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n a = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (b) {\r\n xc.unshift(b);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (a = xc.length; xc[--a] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\n P.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor(1),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent');\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded using rounding mode rm\r\n * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a\r\n * multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n * If rm is not specified, use Big.RM.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)\r\n */\r\n P.round = function (dp, rm) {\r\n var Big = this.constructor;\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP);\r\n return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big(0.5);\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) throw Error(NAME + 'No square root');\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s);\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, Big.DP -= 4, Big.RM);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\n P.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) return new Big(y.s * 0);\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = (c[j] + b) % 10;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in exponential notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n */\r\n P.toExponential = function (dp) {\r\n return stringify(this, 1, dp, dp);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in normal notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP 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 */\r\n P.toFixed = function (dp) {\r\n return stringify(this, 2, dp, this.e + dp);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * Big.RM. Use 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} Integer, 1 to MAX_DP inclusive.\r\n */\r\n P.toPrecision = function (sd) {\r\n return stringify(this, 3, sd, sd - 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\n P.toString = function () {\r\n return stringify(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return stringify(this, 4);\r\n };\r\n\r\n\r\n // Export\r\n\r\n\r\n Big = _Big_();\r\n\r\n Big['default'] = Big.Big = Big;\r\n\r\n //AMD.\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return Big; });\r\n\r\n // Node and other CommonJS-like environments that support module.exports.\r\n } else if (typeof module !== 'undefined' && module.exports) {\r\n module.exports = Big;\r\n\r\n //Browser.\r\n } else {\r\n GLOBAL.Big = Big;\r\n }\r\n})(this);\r\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var clone = (function() {\n'use strict';\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n*/\nfunction clone(parent, circular, depth, prototype) {\n var filter;\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n filter = circular.filter;\n circular = circular.circular\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth == 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n};\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n};\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n};\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n};\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n};\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\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))for(t=0;t 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\n\nmodule.exports = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n}\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3})$/,\n hex = /^#([a-fA-F0-9]{6})$/,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/,\n keyword = /(\\D+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr);\n if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorNames[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n reverseNames[colorNames[name]] = name;\n}\n","/* MIT license */\nvar clone = require('clone');\nvar convert = require('color-convert');\nvar string = require('color-string');\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else {\n\t\t\tthrow new Error('Unable to parse color from string \"' + obj + '\"');\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t} else {\n\t\t\tthrow new Error('Unable to parse color from object ' + JSON.stringify(obj));\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tif (this.values.alpha !== 1) {\n\t\t\treturn this.values.hwb.concat([this.values.alpha]);\n\t\t}\n\t\treturn this.values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn rgb.concat([this.values.alpha]);\n\t},\n\trgbaArrayNormalized: function () {\n\t\tvar rgb = this.values.rgb;\n\t\tvar glRgba = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tglRgba[i] = rgb[i] / 255;\n\t\t}\n\t\tglRgba.push(this.values.alpha);\n\t\treturn glRgba;\n\t},\n\thslaArray: function () {\n\t\tvar hsl = this.values.hsl;\n\t\treturn hsl.concat([this.values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\treturn (this.values.rgb[0] << 16) | (this.values.rgb[1] << 8) | this.values.rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tthis.values.hsl[2] += this.values.hsl[2] * ratio;\n\t\tthis.setValues('hsl', this.values.hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tthis.values.hsl[2] -= this.values.hsl[2] * ratio;\n\t\tthis.setValues('hsl', this.values.hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tthis.values.hsl[1] += this.values.hsl[1] * ratio;\n\t\tthis.setValues('hsl', this.values.hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tthis.values.hsl[1] -= this.values.hsl[1] * ratio;\n\t\tthis.setValues('hsl', this.values.hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tthis.values.hwb[1] += this.values.hwb[1] * ratio;\n\t\tthis.setValues('hwb', this.values.hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tthis.values.hwb[2] += this.values.hwb[2] * ratio;\n\t\tthis.setValues('hwb', this.values.hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tthis.setValues('alpha', this.values.alpha - (this.values.alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tthis.setValues('alpha', this.values.alpha + (this.values.alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hue = this.values.hsl[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\tthis.values.hsl[0] = hue;\n\t\tthis.setValues('hsl', this.values.hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\tvar col = new Color();\n\t\tcol.values = clone(this.values);\n\t\treturn col;\n\t}\n};\n\nColor.prototype.getValues = function (space) {\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = this.values[space][i];\n\t}\n\n\tif (this.values.alpha !== 1) {\n\t\tvals.a = this.values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar spaces = {\n\t\trgb: ['red', 'green', 'blue'],\n\t\thsl: ['hue', 'saturation', 'lightness'],\n\t\thsv: ['hue', 'saturation', 'value'],\n\t\thwb: ['hue', 'whiteness', 'blackness'],\n\t\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n\t};\n\n\tvar maxes = {\n\t\trgb: [255, 255, 255],\n\t\thsl: [360, 100, 100],\n\t\thsv: [360, 100, 100],\n\t\thwb: [360, 100, 100],\n\t\tcmyk: [100, 100, 100, 100]\n\t};\n\n\tvar i;\n\tvar alpha = 1;\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tthis.values[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tthis.values[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tthis.values[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tthis.values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? this.values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], this.values[space][i]));\n\t\tthis.values[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tthis.values[sname] = convert[space][sname](this.values[space]);\n\t\t}\n\n\t\t// cap values\n\t\tfor (i = 0; i < sname.length; i++) {\n\t\t\tcapped = Math.max(0, Math.min(maxes[sname][i], this.values[sname][i]));\n\t\t\tthis.values[sname][i] = Math.round(capped);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn this.values[space][index];\n\t} else if (val === this.values[space][index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tthis.values[space][index] = val;\n\tthis.setValues(space, this.values[space]);\n\n\treturn this;\n};\n\nmodule.exports = Color;\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n var values = []\n var input = String(value || empty)\n var index = input.indexOf(comma)\n var lastIndex = 0\n var end = false\n var val\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n val = input.slice(lastIndex, index).trim()\n\n if (val || !end) {\n values.push(val)\n }\n\n lastIndex = index + 1\n index = input.indexOf(comma, lastIndex)\n }\n\n return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n var settings = options || {}\n var left = settings.padLeft === false ? empty : space\n var right = settings.padRight ? space : empty\n\n // Ensure the last empty entry is seen.\n if (values[values.length - 1] === empty) {\n values = values.concat(empty)\n }\n\n return values.join(right + comma + left).trim()\n}\n","var t=function(){return t=Object.assign||function(t){for(var i,n=1,s=arguments.length;na.endVal;a.frameVal=n?a.endVal:a.frameVal,a.frameVal=Number(a.frameVal.toFixed(a.options.decimalPlaces)),a.printValue(a.frameVal),i1?a.options.decimal+r[1]:\"\",a.options.useGrouping){e=\"\";for(var l=3,h=0,u=0,p=n.length;uwindow.scrollY&&t.paused?(t.paused=!1,setTimeout((function(){return t.start()}),t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):(window.scrollY>a||s>i)&&!t.paused&&t.reset()}},i.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},i.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},i.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},i.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},i.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},i.prototype.printValue=function(t){var i;if(this.el){var n=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,n);else if(\"INPUT\"===this.el.tagName)this.el.value=n;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=n:this.el.innerHTML=n}},i.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},i.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},i.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},i}();export{i as CountUp};\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\nmodule.exports = function ReactNativeFile(_ref) {\n var uri = _ref.uri,\n name = _ref.name,\n type = _ref.type;\n this.uri = uri;\n this.name = name;\n this.type = type;\n};\n","'use strict';\n\nvar defaultIsExtractableFile = require('./isExtractableFile');\n\nmodule.exports = function extractFiles(value, path, isExtractableFile) {\n if (path === void 0) {\n path = '';\n }\n\n if (isExtractableFile === void 0) {\n isExtractableFile = defaultIsExtractableFile;\n }\n\n var clone;\n var files = new Map();\n\n function addFile(paths, file) {\n var storedPaths = files.get(file);\n if (storedPaths) storedPaths.push.apply(storedPaths, paths);\n else files.set(file, paths);\n }\n\n if (isExtractableFile(value)) {\n clone = null;\n addFile([path], value);\n } else {\n var prefix = path ? path + '.' : '';\n if (typeof FileList !== 'undefined' && value instanceof FileList)\n clone = Array.prototype.map.call(value, function (file, i) {\n addFile(['' + prefix + i], file);\n return null;\n });\n else if (Array.isArray(value))\n clone = value.map(function (child, i) {\n var result = extractFiles(child, '' + prefix + i, isExtractableFile);\n result.files.forEach(addFile);\n return result.clone;\n });\n else if (value && value.constructor === Object) {\n clone = {};\n\n for (var i in value) {\n var result = extractFiles(value[i], '' + prefix + i, isExtractableFile);\n result.files.forEach(addFile);\n clone[i] = result.clone;\n }\n } else clone = value;\n }\n\n return {\n clone: clone,\n files: files,\n };\n};\n","'use strict';\n\nexports.ReactNativeFile = require('./ReactNativeFile');\nexports.extractFiles = require('./extractFiles');\nexports.isExtractableFile = require('./isExtractableFile');\n","'use strict';\n\nvar ReactNativeFile = require('./ReactNativeFile');\n\nmodule.exports = function isExtractableFile(value) {\n return (\n (typeof File !== 'undefined' && value instanceof File) ||\n (typeof Blob !== 'undefined' && value instanceof Blob) ||\n value instanceof ReactNativeFile\n );\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\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 } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else 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) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\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 element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\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.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.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 yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || 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 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 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 xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[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 n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) 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 BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(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 = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((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 BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\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","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 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","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","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","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 {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\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","// [[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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\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(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","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","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","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {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 function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {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","export default function number(x) {\n return +x;\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 {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 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","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","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","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","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 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","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","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","export default function() {}\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","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","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","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","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","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 offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import {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\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\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 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","import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n};\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","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 function size(_a) {\n var width = _a.width, height = _a.height;\n if (width < 0) {\n throw new Error('Negative width is not allowed for Size');\n }\n if (height < 0) {\n throw new Error('Negative height is not allowed for Size');\n }\n return {\n width: width,\n height: height,\n };\n}\nexport function equalSizes(first, second) {\n return (first.width === second.width) &&\n (first.height === second.height);\n}\n","var Observable = /** @class */ (function () {\n function Observable(win) {\n var _this = this;\n this._resolutionListener = function () { return _this._onResolutionChanged(); };\n this._resolutionMediaQueryList = null;\n this._observers = [];\n this._window = win;\n this._installResolutionListener();\n }\n Observable.prototype.dispose = function () {\n this._uninstallResolutionListener();\n this._window = null;\n };\n Object.defineProperty(Observable.prototype, \"value\", {\n get: function () {\n return this._window.devicePixelRatio;\n },\n enumerable: false,\n configurable: true\n });\n Observable.prototype.subscribe = function (next) {\n var _this = this;\n var observer = { next: next };\n this._observers.push(observer);\n return {\n unsubscribe: function () {\n _this._observers = _this._observers.filter(function (o) { return o !== observer; });\n },\n };\n };\n Observable.prototype._installResolutionListener = function () {\n if (this._resolutionMediaQueryList !== null) {\n throw new Error('Resolution listener is already installed');\n }\n var dppx = this._window.devicePixelRatio;\n this._resolutionMediaQueryList = this._window.matchMedia(\"all and (resolution: \".concat(dppx, \"dppx)\"));\n // IE and some versions of Edge do not support addEventListener/removeEventListener, and we are going to use the deprecated addListener/removeListener\n this._resolutionMediaQueryList.addListener(this._resolutionListener);\n };\n Observable.prototype._uninstallResolutionListener = function () {\n if (this._resolutionMediaQueryList !== null) {\n // IE and some versions of Edge do not support addEventListener/removeEventListener, and we are going to use the deprecated addListener/removeListener\n this._resolutionMediaQueryList.removeListener(this._resolutionListener);\n this._resolutionMediaQueryList = null;\n }\n };\n Observable.prototype._reinstallResolutionListener = function () {\n this._uninstallResolutionListener();\n this._installResolutionListener();\n };\n Observable.prototype._onResolutionChanged = function () {\n var _this = this;\n this._observers.forEach(function (observer) { return observer.next(_this._window.devicePixelRatio); });\n this._reinstallResolutionListener();\n };\n return Observable;\n}());\nexport function createObservable(win) {\n return new Observable(win);\n}\n","import { equalSizes, size } from \"./size.mjs\";\nimport { createObservable as createDevicePixelRatioObservable } from \"./device-pixel-ratio.mjs\";\nvar DevicePixelContentBoxBinding = /** @class */ (function () {\n function DevicePixelContentBoxBinding(canvasElement, transformBitmapSize, options) {\n var _a;\n this._canvasElement = null;\n this._bitmapSizeChangedListeners = [];\n this._suggestedBitmapSize = null;\n this._suggestedBitmapSizeChangedListeners = [];\n // devicePixelRatio approach\n this._devicePixelRatioObservable = null;\n // ResizeObserver approach\n this._canvasElementResizeObserver = null;\n this._canvasElement = canvasElement;\n this._canvasElementClientSize = size({\n width: this._canvasElement.clientWidth,\n height: this._canvasElement.clientHeight,\n });\n this._transformBitmapSize = transformBitmapSize !== null && transformBitmapSize !== void 0 ? transformBitmapSize : (function (size) { return size; });\n this._allowResizeObserver = (_a = options === null || options === void 0 ? void 0 : options.allowResizeObserver) !== null && _a !== void 0 ? _a : true;\n this._chooseAndInitObserver();\n // we MAY leave the constuctor without any bitmap size observation mechanics initialized\n }\n DevicePixelContentBoxBinding.prototype.dispose = function () {\n var _a, _b;\n if (this._canvasElement === null) {\n throw new Error('Object is disposed');\n }\n (_a = this._canvasElementResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n this._canvasElementResizeObserver = null;\n (_b = this._devicePixelRatioObservable) === null || _b === void 0 ? void 0 : _b.dispose();\n this._devicePixelRatioObservable = null;\n this._suggestedBitmapSizeChangedListeners.length = 0;\n this._bitmapSizeChangedListeners.length = 0;\n this._canvasElement = null;\n };\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"canvasElement\", {\n get: function () {\n if (this._canvasElement === null) {\n throw new Error('Object is disposed');\n }\n return this._canvasElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"canvasElementClientSize\", {\n get: function () {\n return this._canvasElementClientSize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"bitmapSize\", {\n get: function () {\n return size({\n width: this.canvasElement.width,\n height: this.canvasElement.height,\n });\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Use this function to change canvas element client size until binding is disposed\n * @param clientSize New client size for bound HTMLCanvasElement\n */\n DevicePixelContentBoxBinding.prototype.resizeCanvasElement = function (clientSize) {\n this._canvasElementClientSize = size(clientSize);\n this.canvasElement.style.width = \"\".concat(this._canvasElementClientSize.width, \"px\");\n this.canvasElement.style.height = \"\".concat(this._canvasElementClientSize.height, \"px\");\n this._invalidateBitmapSize();\n };\n DevicePixelContentBoxBinding.prototype.subscribeBitmapSizeChanged = function (listener) {\n this._bitmapSizeChangedListeners.push(listener);\n };\n DevicePixelContentBoxBinding.prototype.unsubscribeBitmapSizeChanged = function (listener) {\n this._bitmapSizeChangedListeners = this._bitmapSizeChangedListeners.filter(function (l) { return l !== listener; });\n };\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"suggestedBitmapSize\", {\n get: function () {\n return this._suggestedBitmapSize;\n },\n enumerable: false,\n configurable: true\n });\n DevicePixelContentBoxBinding.prototype.subscribeSuggestedBitmapSizeChanged = function (listener) {\n this._suggestedBitmapSizeChangedListeners.push(listener);\n };\n DevicePixelContentBoxBinding.prototype.unsubscribeSuggestedBitmapSizeChanged = function (listener) {\n this._suggestedBitmapSizeChangedListeners = this._suggestedBitmapSizeChangedListeners.filter(function (l) { return l !== listener; });\n };\n DevicePixelContentBoxBinding.prototype.applySuggestedBitmapSize = function () {\n if (this._suggestedBitmapSize === null) {\n // nothing to apply\n return;\n }\n var oldSuggestedSize = this._suggestedBitmapSize;\n this._suggestedBitmapSize = null;\n this._resizeBitmap(oldSuggestedSize);\n this._emitSuggestedBitmapSizeChanged(oldSuggestedSize, this._suggestedBitmapSize);\n };\n DevicePixelContentBoxBinding.prototype._resizeBitmap = function (newSize) {\n var oldSize = this.bitmapSize;\n if (equalSizes(oldSize, newSize)) {\n return;\n }\n this.canvasElement.width = newSize.width;\n this.canvasElement.height = newSize.height;\n this._emitBitmapSizeChanged(oldSize, newSize);\n };\n DevicePixelContentBoxBinding.prototype._emitBitmapSizeChanged = function (oldSize, newSize) {\n var _this = this;\n this._bitmapSizeChangedListeners.forEach(function (listener) { return listener.call(_this, oldSize, newSize); });\n };\n DevicePixelContentBoxBinding.prototype._suggestNewBitmapSize = function (newSize) {\n var oldSuggestedSize = this._suggestedBitmapSize;\n var finalNewSize = size(this._transformBitmapSize(newSize, this._canvasElementClientSize));\n var newSuggestedSize = equalSizes(this.bitmapSize, finalNewSize) ? null : finalNewSize;\n if (oldSuggestedSize === null && newSuggestedSize === null) {\n return;\n }\n if (oldSuggestedSize !== null && newSuggestedSize !== null\n && equalSizes(oldSuggestedSize, newSuggestedSize)) {\n return;\n }\n this._suggestedBitmapSize = newSuggestedSize;\n this._emitSuggestedBitmapSizeChanged(oldSuggestedSize, newSuggestedSize);\n };\n DevicePixelContentBoxBinding.prototype._emitSuggestedBitmapSizeChanged = function (oldSize, newSize) {\n var _this = this;\n this._suggestedBitmapSizeChangedListeners.forEach(function (listener) { return listener.call(_this, oldSize, newSize); });\n };\n DevicePixelContentBoxBinding.prototype._chooseAndInitObserver = function () {\n var _this = this;\n if (!this._allowResizeObserver) {\n this._initDevicePixelRatioObservable();\n return;\n }\n isDevicePixelContentBoxSupported()\n .then(function (isSupported) {\n return isSupported ?\n _this._initResizeObserver() :\n _this._initDevicePixelRatioObservable();\n });\n };\n // devicePixelRatio approach\n DevicePixelContentBoxBinding.prototype._initDevicePixelRatioObservable = function () {\n var _this = this;\n if (this._canvasElement === null) {\n // it looks like we are already dead\n return;\n }\n var win = canvasElementWindow(this._canvasElement);\n if (win === null) {\n throw new Error('No window is associated with the canvas');\n }\n this._devicePixelRatioObservable = createDevicePixelRatioObservable(win);\n this._devicePixelRatioObservable.subscribe(function () { return _this._invalidateBitmapSize(); });\n this._invalidateBitmapSize();\n };\n DevicePixelContentBoxBinding.prototype._invalidateBitmapSize = function () {\n var _a, _b;\n if (this._canvasElement === null) {\n // it looks like we are already dead\n return;\n }\n var win = canvasElementWindow(this._canvasElement);\n if (win === null) {\n return;\n }\n var ratio = (_b = (_a = this._devicePixelRatioObservable) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : win.devicePixelRatio;\n var canvasRects = this._canvasElement.getClientRects();\n var newSize = \n // eslint-disable-next-line no-negated-condition\n canvasRects[0] !== undefined ?\n predictedBitmapSize(canvasRects[0], ratio) :\n size({\n width: this._canvasElementClientSize.width * ratio,\n height: this._canvasElementClientSize.height * ratio,\n });\n this._suggestNewBitmapSize(newSize);\n };\n // ResizeObserver approach\n DevicePixelContentBoxBinding.prototype._initResizeObserver = function () {\n var _this = this;\n if (this._canvasElement === null) {\n // it looks like we are already dead\n return;\n }\n this._canvasElementResizeObserver = new ResizeObserver(function (entries) {\n var entry = entries.find(function (entry) { return entry.target === _this._canvasElement; });\n if (!entry || !entry.devicePixelContentBoxSize || !entry.devicePixelContentBoxSize[0]) {\n return;\n }\n var entrySize = entry.devicePixelContentBoxSize[0];\n var newSize = size({\n width: entrySize.inlineSize,\n height: entrySize.blockSize,\n });\n _this._suggestNewBitmapSize(newSize);\n });\n this._canvasElementResizeObserver.observe(this._canvasElement, { box: 'device-pixel-content-box' });\n };\n return DevicePixelContentBoxBinding;\n}());\nexport function bindTo(canvasElement, target) {\n if (target.type === 'device-pixel-content-box') {\n return new DevicePixelContentBoxBinding(canvasElement, target.transform, target.options);\n }\n throw new Error('Unsupported binding target');\n}\nfunction canvasElementWindow(canvasElement) {\n // According to DOM Level 2 Core specification, ownerDocument should never be null for HTMLCanvasElement\n // see https://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#node-ownerDoc\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return canvasElement.ownerDocument.defaultView;\n}\nfunction isDevicePixelContentBoxSupported() {\n return new Promise(function (resolve) {\n var ro = new ResizeObserver(function (entries) {\n resolve(entries.every(function (entry) { return 'devicePixelContentBoxSize' in entry; }));\n ro.disconnect();\n });\n ro.observe(document.body, { box: 'device-pixel-content-box' });\n })\n .catch(function () { return false; });\n}\nfunction predictedBitmapSize(canvasRect, ratio) {\n return size({\n width: Math.round(canvasRect.left * ratio + canvasRect.width * ratio) -\n Math.round(canvasRect.left * ratio),\n height: Math.round(canvasRect.top * ratio + canvasRect.height * ratio) -\n Math.round(canvasRect.top * ratio),\n });\n}\n","/**\n * @experimental\n */\nvar CanvasRenderingTarget2D = /** @class */ (function () {\n function CanvasRenderingTarget2D(context, mediaSize, bitmapSize) {\n if (mediaSize.width === 0 || mediaSize.height === 0) {\n throw new TypeError('Rendering target could only be created on a media with positive width and height');\n }\n this._mediaSize = mediaSize;\n // !Number.isInteger(bitmapSize.width) || !Number.isInteger(bitmapSize.height)\n if (bitmapSize.width === 0 || bitmapSize.height === 0) {\n throw new TypeError('Rendering target could only be created using a bitmap with positive integer width and height');\n }\n this._bitmapSize = bitmapSize;\n this._context = context;\n }\n CanvasRenderingTarget2D.prototype.useMediaCoordinateSpace = function (f) {\n try {\n this._context.save();\n // do not use resetTransform to support old versions of Edge\n this._context.setTransform(1, 0, 0, 1, 0, 0);\n this._context.scale(this._horizontalPixelRatio, this._verticalPixelRatio);\n return f({\n context: this._context,\n mediaSize: this._mediaSize,\n });\n }\n finally {\n this._context.restore();\n }\n };\n CanvasRenderingTarget2D.prototype.useBitmapCoordinateSpace = function (f) {\n try {\n this._context.save();\n // do not use resetTransform to support old versions of Edge\n this._context.setTransform(1, 0, 0, 1, 0, 0);\n return f({\n context: this._context,\n mediaSize: this._mediaSize,\n bitmapSize: this._bitmapSize,\n horizontalPixelRatio: this._horizontalPixelRatio,\n verticalPixelRatio: this._verticalPixelRatio,\n });\n }\n finally {\n this._context.restore();\n }\n };\n Object.defineProperty(CanvasRenderingTarget2D.prototype, \"_horizontalPixelRatio\", {\n get: function () {\n return this._bitmapSize.width / this._mediaSize.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CanvasRenderingTarget2D.prototype, \"_verticalPixelRatio\", {\n get: function () {\n return this._bitmapSize.height / this._mediaSize.height;\n },\n enumerable: false,\n configurable: true\n });\n return CanvasRenderingTarget2D;\n}());\nexport { CanvasRenderingTarget2D };\n/**\n * @experimental\n */\nexport function createCanvasRenderingTarget2D(binding, contextOptions) {\n var mediaSize = binding.canvasElementClientSize;\n var bitmapSize = binding.bitmapSize;\n var context = binding.canvasElement.getContext('2d', contextOptions);\n if (context === null) {\n throw new Error('Could not get 2d drawing context from bound canvas element. Has the canvas already been set to a different context mode?');\n }\n return new CanvasRenderingTarget2D(context, mediaSize, bitmapSize);\n}\n/**\n * @experimental\n */\nexport function tryCreateCanvasRenderingTarget2D(binding, contextOptions) {\n var mediaSize = binding.canvasElementClientSize;\n if (mediaSize.width === 0 || mediaSize.height === 0) {\n return null;\n }\n var bitmapSize = binding.bitmapSize;\n if (bitmapSize.width === 0 || bitmapSize.height === 0) {\n return null;\n }\n var context = binding.canvasElement.getContext('2d', contextOptions);\n if (context === null) {\n return null;\n }\n return new CanvasRenderingTarget2D(context, mediaSize, bitmapSize);\n}\n","import {\n AnyEqualityComparator,\n Cache,\n CircularState,\n Dictionary,\n State,\n TypeEqualityComparator,\n} from './internalTypes';\n\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Combine two comparators into a single comparators.\n */\nexport function combineComparators(\n comparatorA: AnyEqualityComparator,\n comparatorB: AnyEqualityComparator,\n) {\n return function isEqual(a: A, b: B, state: State) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\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 */\nexport function createIsCircular<\n AreItemsEqual extends TypeEqualityComparator,\n>(areItemsEqual: AreItemsEqual): AreItemsEqual {\n return function isCircular(\n a: any,\n b: any,\n state: CircularState>,\n ) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n\n const { cache } = state;\n\n const cachedA = cache.get(a);\n const cachedB = cache.get(b);\n\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n\n cache.set(a, b);\n cache.set(b, a);\n\n const result = areItemsEqual(a, b, state);\n\n cache.delete(a);\n cache.delete(b);\n\n return result;\n } as AreItemsEqual;\n}\n\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nexport function getStrictProperties(\n object: Dictionary,\n): Array {\n return (getOwnPropertyNames(object) as Array).concat(\n getOwnPropertySymbols(object),\n );\n}\n\n/**\n * Whether the object contains the property passed as an own property.\n */\nexport const hasOwn =\n Object.hasOwn ||\n ((object: Dictionary, property: number | string | symbol) =>\n hasOwnProperty.call(object, property));\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n","import { getStrictProperties, hasOwn, sameValueZeroEqual } from './utils';\nimport type {\n Dictionary,\n PrimitiveWrapper,\n State,\n TypedArray,\n} from './internalTypes';\n\nconst OWNER = '_owner';\n\nconst { getOwnPropertyDescriptor, keys } = Object;\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(a: any[], b: any[], state: State) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the dates passed are equal in value.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(\n a: Map,\n b: Map,\n state: State,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n const matchedIndices: Record = {};\n const aIterable = a.entries();\n\n let index = 0;\n let aResult: IteratorResult<[any, any]>;\n let bResult: IteratorResult<[any, any]>;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.entries();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n const [aKey, aValue] = aResult.value;\n const [bKey, bValue] = bResult.value;\n\n if (\n !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 ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n\n index++;\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(\n a: Dictionary,\n b: Dictionary,\n state: State,\n): boolean {\n const properties = keys(a);\n\n let index = properties.length;\n\n if (keys(b).length !== index) {\n return false;\n }\n\n let property: string;\n\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\n if (\n property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof\n ) {\n return false;\n }\n\n if (\n !hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nexport function areObjectsEqualStrict(\n a: Dictionary,\n b: Dictionary,\n state: State,\n): boolean {\n const properties = getStrictProperties(a);\n\n let index = properties.length;\n\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n\n let property: string | symbol;\n let descriptorA: ReturnType;\n let descriptorB: ReturnType;\n\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\n if (\n property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof\n ) {\n return false;\n }\n\n if (!hasOwn(b, property)) {\n return false;\n }\n\n if (\n !state.equals(a[property], b[property], property, property, a, b, state)\n ) {\n return false;\n }\n\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n\n if (\n (descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nexport function arePrimitiveWrappersEqual(\n a: PrimitiveWrapper,\n b: PrimitiveWrapper,\n): boolean {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n\n/**\n * Whether the regexps passed are equal in value.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n return a.source === b.source && a.flags === b.flags;\n}\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(\n a: Set,\n b: Set,\n state: State,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n const matchedIndices: Record = {};\n const aIterable = a.values();\n\n let aResult: IteratorResult;\n let bResult: IteratorResult;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.values();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n if (\n !hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(\n aResult.value,\n bResult.value,\n aResult.value,\n bResult.value,\n a,\n b,\n state,\n ))\n ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the TypedArray instances are equal in value.\n */\nexport function areTypedArraysEqual(a: TypedArray, b: TypedArray) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n\n return true;\n}\n","import {\n areArraysEqual as areArraysEqualDefault,\n areDatesEqual as areDatesEqualDefault,\n areMapsEqual as areMapsEqualDefault,\n areObjectsEqual as areObjectsEqualDefault,\n areObjectsEqualStrict as areObjectsEqualStrictDefault,\n arePrimitiveWrappersEqual as arePrimitiveWrappersEqualDefault,\n areRegExpsEqual as areRegExpsEqualDefault,\n areSetsEqual as areSetsEqualDefault,\n areTypedArraysEqual,\n} from './equals';\nimport { combineComparators, createIsCircular } from './utils';\nimport type {\n ComparatorConfig,\n CreateState,\n CustomEqualCreatorOptions,\n EqualityComparator,\n InternalEqualityComparator,\n State,\n} from './internalTypes';\n\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATE_TAG = '[object Date]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\n\nconst { isArray } = Array;\nconst isTypedArray =\n typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nconst { assign } = Object;\nconst getTag = Object.prototype.toString.call.bind(\n Object.prototype.toString,\n) as (a: object) => string;\n\ninterface CreateIsEqualOptions {\n circular: boolean;\n comparator: EqualityComparator;\n createState: CreateState | undefined;\n equals: InternalEqualityComparator;\n strict: boolean;\n}\n\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nexport function createEqualityComparator({\n areArraysEqual,\n areDatesEqual,\n areMapsEqual,\n areObjectsEqual,\n arePrimitiveWrappersEqual,\n areRegExpsEqual,\n areSetsEqual,\n areTypedArraysEqual,\n}: ComparatorConfig): EqualityComparator {\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a: any, b: any, state: State): boolean {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\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 (\n a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object'\n ) {\n return a !== a && b !== b;\n }\n\n const constructor = a.constructor;\n\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\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\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\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\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\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\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\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 const tag = getTag(a);\n\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\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 (\n typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state)\n );\n }\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\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\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/**\n * Create the configuration object used for building comparators.\n */\nexport function createEqualityComparatorConfig({\n circular,\n createCustomConfig,\n strict,\n}: CustomEqualCreatorOptions): ComparatorConfig {\n let config = {\n areArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areArraysEqualDefault,\n areDatesEqual: areDatesEqualDefault,\n areMapsEqual: strict\n ? combineComparators(areMapsEqualDefault, areObjectsEqualStrictDefault)\n : areMapsEqualDefault,\n areObjectsEqual: strict\n ? areObjectsEqualStrictDefault\n : areObjectsEqualDefault,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqualDefault,\n areRegExpsEqual: areRegExpsEqualDefault,\n areSetsEqual: strict\n ? combineComparators(areSetsEqualDefault, areObjectsEqualStrictDefault)\n : areSetsEqualDefault,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areTypedArraysEqual,\n };\n\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n\n if (circular) {\n const areArraysEqual = createIsCircular(config.areArraysEqual);\n const areMapsEqual = createIsCircular(config.areMapsEqual);\n const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n const areSetsEqual = createIsCircular(config.areSetsEqual);\n\n config = assign({}, config, {\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areSetsEqual,\n });\n }\n\n return config;\n}\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createInternalEqualityComparator(\n compare: EqualityComparator,\n): InternalEqualityComparator {\n return function (\n a: any,\n b: any,\n _indexOrKeyA: any,\n _indexOrKeyB: any,\n _parentA: any,\n _parentB: any,\n state: State,\n ) {\n return compare(a, b, state);\n };\n}\n\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nexport function createIsEqual({\n circular,\n comparator,\n createState,\n equals,\n strict,\n}: CreateIsEqualOptions) {\n if (createState) {\n return function isEqual(a: A, b: B): boolean {\n const { cache = circular ? new WeakMap() : undefined, meta } =\n createState!();\n\n return comparator(a, b, {\n cache,\n equals,\n meta,\n strict,\n } as State);\n };\n }\n\n if (circular) {\n return function isEqual(a: A, b: B): boolean {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals,\n meta: undefined as Meta,\n strict,\n } as State);\n };\n }\n\n const state = {\n cache: undefined,\n equals,\n meta: undefined,\n strict,\n } as State;\n\n return function isEqual(a: A, b: B): boolean {\n return comparator(a, b, state);\n };\n}\n","import {\n createEqualityComparatorConfig,\n createEqualityComparator,\n createInternalEqualityComparator,\n createIsEqual,\n} from './comparator';\nimport type { CustomEqualCreatorOptions } from './internalTypes';\nimport { sameValueZeroEqual } from './utils';\n\nexport { sameValueZeroEqual };\nexport * from './internalTypes';\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport const deepEqual = createCustomEqual();\n\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nexport const strictDeepEqual = createCustomEqual({ strict: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport const circularDeepEqual = createCustomEqual({ circular: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport const shallowEqual = createCustomEqual({\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nexport const strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport const circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n strict: true,\n});\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 */\nexport function createCustomEqual(\n options: CustomEqualCreatorOptions = {},\n) {\n const {\n circular = false,\n createInternalComparator: createCustomInternalComparator,\n createState,\n strict = false,\n } = options;\n\n const config = createEqualityComparatorConfig(options);\n const comparator = createEqualityComparator(config);\n const equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n\n return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","import { isBezierDefinition } from '../../../easing/utils/is-bezier-definition.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n return Boolean(!easing ||\n (typeof easing === \"string\" && supportedWaapiEasing[easing]) ||\n isBezierDefinition(easing) ||\n (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing) {\n if (!easing)\n return undefined;\n return isBezierDefinition(easing)\n ? cubicBezierAsString(easing)\n : Array.isArray(easing)\n ? easing.map(mapEasingToNativeEasing)\n : supportedWaapiEasing[easing];\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = cubicBezier(0.42, 0, 1, 1);\nconst easeOut = cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { invariant } from './errors.mjs';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\nimport { hex } from '../value/types/color/hex.mjs';\nimport { rgba } from '../value/types/color/rgba.mjs';\nimport { hsla } from '../value/types/color/hsla.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n return Math.sqrt(Math.max(0, v * (to * to - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n invariant(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mix(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from './errors.mjs';\nimport { color } from '../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../value/types/complex/index.mjs';\n\nconst mixImmediate = (origin, target) => (p) => `${p > 0 ? target : origin}`;\nfunction getMixer(origin, target) {\n if (typeof origin === \"number\") {\n return (v) => mix(origin, target, v);\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return origin.startsWith(\"var(\")\n ? mixImmediate(origin, target)\n : mixComplex(origin, target);\n }\n}\nconst mixArray = (from, to) => {\n const output = [...from];\n const numValues = output.length;\n const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n return (v) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nconst mixObject = (origin, target) => {\n const output = { ...origin, ...target };\n const blendValue = {};\n for (const key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.numVars === targetStats.numVars &&\n originStats.numColors === targetStats.numColors &&\n originStats.numNumbers >= targetStats.numNumbers;\n if (canInterpolate) {\n return pipe(mixArray(originStats.values, targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return mixImmediate(origin, target);\n }\n};\n\nexport { mixArray, mixComplex, mixObject };\n","import { invariant } from './errors.mjs';\nimport { color } from '../value/types/color/index.mjs';\nimport { clamp } from './clamp.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n if (typeof v === \"number\") {\n return mixNumber;\n }\n else if (typeof v === \"string\") {\n return color.test(v) ? mixColor : mixComplex;\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === \"object\") {\n return mixObject;\n }\n return mixNumber;\n}\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || detectMixerFactory(output[0]);\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nexport { defaultOffset };\n","import { mix } from '../mix.mjs';\nimport { progress } from '../progress.mjs';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mix(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n return {\n calculatedDuration: duration,\n next: (t) => {\n state.value = mapTimeToKeyframe(t);\n state.done = t >= duration;\n return state;\n },\n };\n}\n\nexport { defaultEasing, keyframes };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n velocity: 0.0,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n const initialVelocity = velocity ? -millisecondsToSeconds(velocity) : 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value),\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t > timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nexport { inertia };\n","import { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n const passTimestamp = ({ timestamp }) => update(timestamp);\n return {\n start: () => frame.update(passTimestamp, true),\n stop: () => cancelFrame(passTimestamp),\n /**\n * If we're processing this frame we can use the\n * framelocked timestamp to keep things in sync.\n */\n now: () => frameData.isProcessing ? frameData.timestamp : performance.now(),\n };\n};\n\nexport { frameloopDriver };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","import { keyframes } from '../../generators/keyframes.mjs';\nimport { spring } from '../../generators/spring/index.mjs';\nimport { inertia } from '../../generators/inertia.mjs';\nimport { frameloopDriver } from './driver-frameloop.mjs';\nimport { interpolate } from '../../../utils/interpolate.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorDuration } from '../../generators/utils/calc-duration.mjs';\n\nconst types = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\n/**\n * Animate a single value on the main thread.\n *\n * This function is written, where functionality overlaps,\n * to be largely spec-compliant with WAAPI to allow fungibility\n * between the two.\n */\nfunction animateValue({ autoplay = true, delay = 0, driver = frameloopDriver, keyframes: keyframes$1, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", onPlay, onStop, onComplete, onUpdate, ...options }) {\n let speed = 1;\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let animationDriver;\n const generatorFactory = types[type] || keyframes;\n /**\n * If this isn't the keyframes generator and we've been provided\n * strings as keyframes, we need to interpolate these.\n * TODO: Support velocity for units and complex value types/\n */\n let mapNumbersToKeyframes;\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n mapNumbersToKeyframes = interpolate([0, 100], keyframes$1, {\n clamp: false,\n });\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n let mirroredGenerator;\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -(options.velocity || 0),\n });\n }\n let playState = \"idle\";\n let holdTime = null;\n let startTime = null;\n let cancelTime = null;\n /**\n * If duration is undefined and we have repeat options,\n * we need to calculate a duration from the generator.\n *\n * We set it to the generator itself to cache the duration.\n * Any timeline resolver will need to have already precalculated\n * the duration by this step.\n */\n if (generator.calculatedDuration === null && repeat) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n let resolvedDuration = Infinity;\n let totalDuration = Infinity;\n if (calculatedDuration !== null) {\n resolvedDuration = calculatedDuration + repeatDelay;\n totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n }\n let currentTime = 0;\n const tick = (timestamp) => {\n if (startTime === null)\n return;\n /**\n * requestAnimationFrame timestamps can come through as lower than\n * the startTime as set by performance.now(). Here we prevent this,\n * though in the future it could be possible to make setting startTime\n * a pending operation that gets resolved here.\n */\n if (speed > 0)\n startTime = Math.min(startTime, timestamp);\n if (speed < 0)\n startTime = Math.min(timestamp - totalDuration / speed, startTime);\n if (holdTime !== null) {\n currentTime = holdTime;\n }\n else {\n // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n // example.\n currentTime = Math.round(timestamp - startTime) * speed;\n }\n // Rebase on delay\n const timeWithoutDelay = currentTime - delay * (speed >= 0 ? 1 : -1);\n const isInDelayPhase = speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n currentTime = Math.max(timeWithoutDelay, 0);\n /**\n * If this animation has finished, set the current time\n * to the total duration.\n */\n if (playState === \"finished\" && holdTime === null) {\n currentTime = totalDuration;\n }\n let elapsed = currentTime;\n let frameGenerator = generator;\n if (repeat) {\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = currentTime / resolvedDuration;\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n iterationProgress === 1 && currentIteration--;\n currentIteration = Math.min(currentIteration, repeat + 1);\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const iterationIsOdd = Boolean(currentIteration % 2);\n if (iterationIsOdd) {\n if (repeatType === \"reverse\") {\n iterationProgress = 1 - iterationProgress;\n if (repeatDelay) {\n iterationProgress -= repeatDelay / resolvedDuration;\n }\n }\n else if (repeatType === \"mirror\") {\n frameGenerator = mirroredGenerator;\n }\n }\n let p = clamp(0, 1, iterationProgress);\n if (currentTime > totalDuration) {\n p = repeatType === \"reverse\" && iterationIsOdd ? 1 : 0;\n }\n elapsed = p * resolvedDuration;\n }\n /**\n * If we're in negative time, set state as the initial keyframe.\n * This prevents delay: x, duration: 0 animations from finishing\n * instantly.\n */\n const state = isInDelayPhase\n ? { done: false, value: keyframes$1[0] }\n : frameGenerator.next(elapsed);\n if (mapNumbersToKeyframes) {\n state.value = mapNumbersToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done = speed >= 0 ? currentTime >= totalDuration : currentTime <= 0;\n }\n const isAnimationFinished = holdTime === null &&\n (playState === \"finished\" || (playState === \"running\" && done));\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n finish();\n }\n return state;\n };\n const stopAnimationDriver = () => {\n animationDriver && animationDriver.stop();\n animationDriver = undefined;\n };\n const cancel = () => {\n playState = \"idle\";\n stopAnimationDriver();\n resolveFinishedPromise();\n updateFinishedPromise();\n startTime = cancelTime = null;\n };\n const finish = () => {\n playState = \"finished\";\n onComplete && onComplete();\n stopAnimationDriver();\n resolveFinishedPromise();\n };\n const play = () => {\n if (hasStopped)\n return;\n if (!animationDriver)\n animationDriver = driver(tick);\n const now = animationDriver.now();\n onPlay && onPlay();\n if (holdTime !== null) {\n startTime = now - holdTime;\n }\n else if (!startTime || playState === \"finished\") {\n startTime = now;\n }\n if (playState === \"finished\") {\n updateFinishedPromise();\n }\n cancelTime = startTime;\n holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n playState = \"running\";\n animationDriver.start();\n };\n if (autoplay) {\n play();\n }\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n get time() {\n return millisecondsToSeconds(currentTime);\n },\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n currentTime = newTime;\n if (holdTime !== null || !animationDriver || speed === 0) {\n holdTime = newTime;\n }\n else {\n startTime = animationDriver.now() - newTime / speed;\n }\n },\n get duration() {\n const duration = generator.calculatedDuration === null\n ? calcGeneratorDuration(generator)\n : generator.calculatedDuration;\n return millisecondsToSeconds(duration);\n },\n get speed() {\n return speed;\n },\n set speed(newSpeed) {\n if (newSpeed === speed || !animationDriver)\n return;\n speed = newSpeed;\n controls.time = millisecondsToSeconds(currentTime);\n },\n get state() {\n return playState;\n },\n play,\n pause: () => {\n playState = \"paused\";\n holdTime = currentTime;\n },\n stop: () => {\n hasStopped = true;\n if (playState === \"idle\")\n return;\n playState = \"idle\";\n onStop && onStop();\n cancel();\n },\n cancel: () => {\n if (cancelTime !== null)\n tick(cancelTime);\n cancel();\n },\n complete: () => {\n playState = \"finished\";\n },\n sample: (elapsed) => {\n startTime = 0;\n return tick(elapsed);\n },\n };\n return controls;\n}\n\nexport { animateValue };\n","import { animateStyle } from './index.mjs';\nimport { isWaapiSupportedEasing } from './easing.mjs';\nimport { getFinalKeyframe } from './utils/get-final-keyframe.mjs';\nimport { animateValue } from '../js/index.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { memo } from '../../../utils/memo.mjs';\nimport { noop } from '../../../utils/noop.mjs';\nimport { frameData, frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n \"backgroundColor\",\n]);\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\nconst requiresPregeneratedKeyframes = (valueName, options) => options.type === \"spring\" ||\n valueName === \"backgroundColor\" ||\n !isWaapiSupportedEasing(options.ease);\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n const canAccelerateAnimation = supportsWaapi() &&\n acceleratedValues.has(valueName) &&\n !options.repeatDelay &&\n options.repeatType !== \"mirror\" &&\n options.damping !== 0 &&\n options.type !== \"inertia\";\n if (!canAccelerateAnimation)\n return false;\n /**\n * TODO: Unify with js/index\n */\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let { keyframes, duration = 300, ease, times } = options;\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(valueName, options)) {\n const sampleAnimation = animateValue({\n ...options,\n repeat: 0,\n delay: 0,\n });\n let state = { done: false, value: keyframes[0] };\n const pregeneratedKeyframes = [];\n /**\n * Bail after 20 seconds of pre-generated keyframes as it's likely\n * we're heading for an infinite loop.\n */\n let t = 0;\n while (!state.done && t < maxDuration) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n times = undefined;\n keyframes = pregeneratedKeyframes;\n duration = t - sampleDelta;\n ease = \"linear\";\n }\n const animation = animateStyle(value.owner.current, valueName, keyframes, {\n ...options,\n duration,\n /**\n * This function is currently not called if ease is provided\n * as a function so the cast is safe.\n *\n * However it would be possible for a future refinement to port\n * in easing pregeneration from Motion One for browsers that\n * support the upcoming `linear()` easing function.\n */\n ease: ease,\n times,\n });\n /**\n * WAAPI animations don't resolve startTime synchronously. But a blocked\n * thread could delay the startTime resolution by a noticeable amount.\n * For synching handoff animations with the new Motion animation we want\n * to ensure startTime is synchronously set.\n */\n if (options.syncStart) {\n animation.startTime = frameData.isProcessing\n ? frameData.timestamp\n : document.timeline\n ? document.timeline.currentTime\n : performance.now();\n }\n const cancelAnimation = () => animation.cancel();\n const safeCancel = () => {\n frame.update(cancelAnimation);\n resolveFinishedPromise();\n updateFinishedPromise();\n };\n /**\n * Prefer the `onfinish` prop as it's more widely supported than\n * the `finished` promise.\n *\n * Here, we synchronously set the provided MotionValue to the end\n * keyframe. If we didn't, when the WAAPI animation is finished it would\n * be removed from the element which would then revert to its old styles.\n */\n animation.onfinish = () => {\n value.set(getFinalKeyframe(keyframes, options));\n onComplete && onComplete();\n safeCancel();\n };\n /**\n * Animation interrupt callback.\n */\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n attachTimeline(timeline) {\n animation.timeline = timeline;\n animation.onfinish = null;\n return noop;\n },\n get time() {\n return millisecondsToSeconds(animation.currentTime || 0);\n },\n set time(newTime) {\n animation.currentTime = secondsToMilliseconds(newTime);\n },\n get speed() {\n return animation.playbackRate;\n },\n set speed(newSpeed) {\n animation.playbackRate = newSpeed;\n },\n get duration() {\n return millisecondsToSeconds(duration);\n },\n play: () => {\n if (hasStopped)\n return;\n animation.play();\n /**\n * Cancel any pending cancel tasks\n */\n cancelFrame(cancelAnimation);\n },\n pause: () => animation.pause(),\n stop: () => {\n hasStopped = true;\n if (animation.playState === \"idle\")\n return;\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n const { currentTime } = animation;\n if (currentTime) {\n const sampleAnimation = animateValue({\n ...options,\n autoplay: false,\n });\n value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n }\n safeCancel();\n },\n complete: () => animation.finish(),\n cancel: safeCancel,\n };\n return controls;\n}\n\nexport { createAcceleratedAnimation };\n","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n const keyframeOptions = { [valueName]: keyframes };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing))\n keyframeOptions.easing = easing;\n return element.animate(keyframeOptions, {\n delay,\n duration,\n easing: !Array.isArray(easing) ? easing : \"linear\",\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n });\n}\n\nexport { animateStyle };\n","function getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }) {\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : keyframes.length - 1;\n return keyframes[index];\n}\n\nexport { getFinalKeyframe };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n}\n\nexport { isNone };\n","import { warning } from '../../utils/errors.mjs';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { createAcceleratedAnimation } from '../animators/waapi/create-accelerated-animation.mjs';\nimport { createInstantAnimation } from '../animators/instant.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { isAnimatable } from '../utils/is-animatable.mjs';\nimport { getKeyframes } from '../utils/keyframes.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { animateValue } from '../animators/js/index.mjs';\n\nconst animateMotionValue = (valueName, value, target, transition = {}) => {\n return (onComplete) => {\n const valueTransition = getValueTransition(transition, valueName) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n const keyframes = getKeyframes(value, valueName, target, valueTransition);\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n let options = {\n keyframes,\n velocity: value.getVelocity(),\n ease: \"easeOut\",\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(valueName, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n if (options.duration) {\n options.duration = secondsToMilliseconds(options.duration);\n }\n if (options.repeatDelay) {\n options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n }\n if (!isOriginAnimatable ||\n !isTargetAnimatable ||\n instantAnimationState.current ||\n valueTransition.type === false) {\n /**\n * If we can't animate this value, or the global instant animation flag is set,\n * or this is simply defined as an instant transition, return an instant transition.\n */\n return createInstantAnimation(instantAnimationState.current\n ? { ...options, delay: 0 }\n : options);\n }\n /**\n * Animate via WAAPI if possible.\n */\n if (value.owner &&\n value.owner.current instanceof HTMLElement &&\n !value.owner.getProps().onUpdate) {\n const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n if (acceleratedAnimation)\n return acceleratedAnimation;\n }\n /**\n * If we didn't create an accelerated animation, create a JS animation\n */\n return animateValue(options);\n };\n};\n\nexport { animateMotionValue };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { isNone } from './is-none.mjs';\n\nfunction getKeyframes(value, valueName, target, transition) {\n const isTargetAnimatable = isAnimatable(valueName, target);\n let keyframes;\n if (Array.isArray(target)) {\n keyframes = [...target];\n }\n else {\n keyframes = [null, target];\n }\n const defaultOrigin = transition.from !== undefined ? transition.from : value.get();\n let animatableTemplateValue = undefined;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < keyframes.length; i++) {\n /**\n * Fill null/wildcard keyframes\n */\n if (keyframes[i] === null) {\n keyframes[i] = i === 0 ? defaultOrigin : keyframes[i - 1];\n }\n if (isNone(keyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n // TODO: Clean this conditional, it works for now\n if (typeof keyframes[i] === \"string\" &&\n keyframes[i] !== \"none\" &&\n keyframes[i] !== \"0\") {\n animatableTemplateValue = keyframes[i];\n }\n }\n if (isTargetAnimatable &&\n noneKeyframeIndexes.length &&\n animatableTemplateValue) {\n for (let i = 0; i < noneKeyframeIndexes.length; i++) {\n const index = noneKeyframeIndexes[i];\n keyframes[index] = getAnimatableNone(valueName, animatableTemplateValue);\n }\n }\n return keyframes;\n}\n\nexport { getKeyframes };\n","import { animateValue } from './js/index.mjs';\nimport { noop } from '../../utils/noop.mjs';\n\nfunction createInstantAnimation({ keyframes, delay, onUpdate, onComplete, }) {\n const setValue = () => {\n onUpdate && onUpdate(keyframes[keyframes.length - 1]);\n onComplete && onComplete();\n /**\n * TODO: As this API grows it could make sense to always return\n * animateValue. This will be a bigger project as animateValue\n * is frame-locked whereas this function resolves instantly.\n * This is a behavioural change and also has ramifications regarding\n * assumptions within tests.\n */\n return {\n time: 0,\n speed: 1,\n duration: 0,\n play: (noop),\n pause: (noop),\n stop: (noop),\n then: (resolve) => {\n resolve();\n return Promise.resolve();\n },\n cancel: (noop),\n complete: (noop),\n };\n };\n return delay\n ? animateValue({\n keyframes: [0, 1],\n duration: 0,\n delay,\n onComplete: setValue,\n })\n : setValue();\n}\n\nexport { createInstantAnimation };\n","function isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n\nexport { getValueTransition, isTransitionDefined };\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = React.createElement(PopChild, { isPresent: isPresent }, children);\n }\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exitingChildren.clear();\n });\n if (isInitialRender.current) {\n return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n exitingChildren.set(key, undefined);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exitingChildren.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n let exitingComponent = component;\n if (!exitingComponent) {\n const onExit = () => {\n allChildren.delete(key);\n exitingChildren.delete(key);\n // Remove this child from the present children\n const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);\n presentChildren.current.splice(removeIndex, 1);\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n presentChildren.current = filteredChildren;\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (React.createElement(React.Fragment, null, exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import * as React from 'react';\nimport { useState, useRef, useEffect } from 'react';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { loadFeatures } from '../../motion/features/load-features.mjs';\n\n/**\n * Used in conjunction with the `m` component to reduce bundle size.\n *\n * `m` is a version of the `motion` component that only loads functionality\n * critical for the initial render.\n *\n * `LazyMotion` can then be used to either synchronously or asynchronously\n * load animation and gesture support.\n *\n * ```jsx\n * // Synchronous loading\n * import { LazyMotion, m, domAnimation } from \"framer-motion\"\n *\n * function App() {\n * return (\n * \n * \n * \n * )\n * }\n *\n * // Asynchronous loading\n * import { LazyMotion, m } from \"framer-motion\"\n *\n * function App() {\n * return (\n * import('./path/to/domAnimation')}>\n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nfunction LazyMotion({ children, features, strict = false }) {\n const [, setIsLoaded] = useState(!isLazyBundle(features));\n const loadedRenderer = useRef(undefined);\n /**\n * If this is a synchronous load, load features immediately\n */\n if (!isLazyBundle(features)) {\n const { renderer, ...loadedFeatures } = features;\n loadedRenderer.current = renderer;\n loadFeatures(loadedFeatures);\n }\n useEffect(() => {\n if (isLazyBundle(features)) {\n features().then(({ renderer, ...loadedFeatures }) => {\n loadFeatures(loadedFeatures);\n loadedRenderer.current = renderer;\n setIsLoaded(true);\n });\n }\n }, []);\n return (React.createElement(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict } }, children));\n}\nfunction isLazyBundle(features) {\n return typeof features === \"function\";\n}\n\nexport { LazyMotion };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\n\nexport { circIn, circInOut, circOut };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[pointType + \"X\"],\n y: event[pointType + \"Y\"],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","class Queue {\n constructor() {\n this.order = [];\n this.scheduled = new Set();\n }\n add(process) {\n if (!this.scheduled.has(process)) {\n this.scheduled.add(process);\n this.order.push(process);\n return true;\n }\n }\n remove(process) {\n const index = this.order.indexOf(process);\n if (index !== -1) {\n this.order.splice(index, 1);\n this.scheduled.delete(process);\n }\n }\n clear() {\n this.order.length = 0;\n this.scheduled.clear();\n }\n}\nfunction createRenderStep(runNextFrame) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Queue();\n let nextFrame = new Queue();\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n // If we're adding it to the currently running queue, update its measured size\n numToRun = thisFrame.order.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.remove(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n numToRun = thisFrame.order.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = thisFrame.order[i];\n callback(frameData);\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n \"prepare\",\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0,\n timestamp: 0,\n isProcessing: false,\n };\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n }, {});\n const processStep = (stepId) => steps[stepId].process(state);\n const processBatch = () => {\n const timestamp = performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n stepsOrder.forEach(processStep);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => stepsOrder.forEach((key) => steps[key].cancel(process));\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","const featureProps = {\n animation: [\n \"animate\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"exit\",\n \"whileInView\",\n \"whileFocus\",\n \"whileDrag\",\n ],\n exit: [\"exit\"],\n drag: [\"drag\", \"dragControls\"],\n focus: [\"whileFocus\"],\n hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","import { mix } from '../../utils/mix.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const instance = node.instance;\n if (instance &&\n instance.style &&\n instance.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.values.forEach((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n const velocity = {};\n visualElement.values.forEach((value, key) => (velocity[key] = value.getVelocity()));\n return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\nexport { isNumericalString };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n const numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (let i = 0; i < numNewValues; i++) {\n const key = newValueKeys[i];\n const targetValue = target[key];\n let value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n if (origin[key] === undefined) {\n origin[key] = value;\n }\n if (value !== null)\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n const valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n if (transitionOrigin !== undefined) {\n origin[key] = transitionOrigin;\n }\n else {\n const value = visualElement.getValue(key);\n if (value) {\n origin[key] = value.get();\n }\n }\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { optimizedAppearDataAttribute } from '../optimized-appear/data-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\nfunction animateTarget(visualElement, definition, { delay = 0, transitionOverride, type } = {}) {\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key);\n const valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n elapsed: 0,\n ...transition,\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n if (window.HandoffAppearAnimations && !value.hasAnimated) {\n const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n if (appearId) {\n valueTransition.elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n valueTransition.syncStart = true;\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition));\n const animation = value.animation;\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n }\n return animations;\n}\n\nexport { animateTarget };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n const resolved = resolveVariant(visualElement, variant, options.custom);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (acc, definition) => {\n const resolved = resolveVariant(visualElement, definition);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(options, changedActiveType) {\n const props = visualElement.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined ? props[type] : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n removedKeys.delete(key);\n typeState.needsAnimating[key] = true;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n if (next !== prev) {\n /**\n * If both values are keyframes, we need to shallow compare them to\n * detect whether any value has changed. If it has, we animate it.\n */\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n if (!shallowCompare(next, prev) || variantDidChange) {\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we want to ensure it doesn't animate by\n * adding it to the list of protected keys.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n else if (next !== undefined) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n * TODO: Test as this should probably still handle animations triggered\n * by removed values?\n */\n if (shouldAnimateType && !isInherited) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type, ...options },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n if (fallbackTarget !== undefined) {\n fallbackAnimation[key] = fallbackTarget;\n }\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n props.initial === false &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive, options) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(options, type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n }\n return animation.then(() => visualElement.notify(\"AnimationComplete\", definition));\n}\n\nexport { animateVisualElement };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n this.unmount();\n if (isAnimationControls(animate)) {\n this.unmount = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() { }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete, custom } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent, { custom: custom !== null && custom !== void 0 ? custom : this.node.getProps().custom });\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = \"pointer\" + (isActive ? \"enter\" : \"leave\");\n const callbackName = \"onHover\" + (isActive ? \"Start\" : \"End\");\n const handleEvent = (event, info) => {\n if (event.type === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n if (props[callbackName]) {\n frame.update(() => props[callbackName](event, info));\n }\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\nclass HoverGesture extends Feature {\n mount() {\n this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\n catch (e) {\n isFocusVisible = true;\n }\n if (!isFocusVisible || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", true);\n this.isActive = true;\n }\n onBlur() {\n if (!this.isActive || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", false);\n this.isActive = false;\n }\n mount() {\n this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n }\n unmount() { }\n}\n\nexport { FocusGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n if (!handler)\n return;\n const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removeStartListeners = noop;\n this.removeEndListeners = noop;\n this.removeAccessibleListeners = noop;\n this.startPointerPress = (startEvent, startInfo) => {\n this.removeEndListeners();\n if (this.isPressing)\n return;\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel } = this.node.getProps();\n frame.update(() => {\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel && onTapCancel(endEvent, endInfo)\n : onTap && onTap(endEvent, endInfo);\n });\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, { passive: !(props.onTap || props[\"onPointerUp\"]) });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), { passive: !(props.onTapCancel || props[\"onPointerCancel\"]) });\n this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n this.startPress(startEvent, startInfo);\n };\n this.startAccessiblePress = () => {\n const handleKeydown = (keydownEvent) => {\n if (keydownEvent.key !== \"Enter\" || this.isPressing)\n return;\n const handleKeyup = (keyupEvent) => {\n if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n return;\n fireSyntheticPointerEvent(\"up\", (event, info) => {\n const { onTap } = this.node.getProps();\n if (onTap) {\n frame.update(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", true);\n }\n if (onTapStart) {\n frame.update(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.update(() => onTapCancel(event, info));\n }\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(this.node.current, \"pointerdown\", this.startPointerPress, { passive: !(props.onTapStart || props[\"onPointerStart\"]) });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n else if (isCSSVariableToken(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n const element = visualElement.current;\n if (!(element instanceof Element))\n return { target, transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = { ...transitionEnd };\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.values.forEach((value) => {\n const current = value.get();\n if (!isCSSVariableToken(current))\n return;\n const resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (const key in target) {\n const current = target[key];\n if (!isCSSVariableToken(current))\n continue;\n const resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n if (!transitionEnd)\n transitionEnd = {};\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { parseCSSVariable, resolveCSSVariables };\n","import { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from '../../../utils/errors.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\nimport { isBrowser } from '../../../utils/is-browser.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\n};\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.render();\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\nconst convertChangedValueTypes = (target, visualElement, changedKeys) => {\n const originBbox = visualElement.measureViewportBox();\n const element = visualElement.current;\n const elementComputedStyle = getComputedStyle(element);\n const { display } = elementComputedStyle;\n const origin = {};\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValue(\"display\", target.display || \"block\");\n }\n /**\n * Record origins before we render and update styles\n */\n changedKeys.forEach((key) => {\n origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n });\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n const targetBbox = visualElement.measureViewportBox();\n changedKeys.forEach((key) => {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n const value = visualElement.getValue(key);\n value && value.jump(origin[key]);\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nconst checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n target = { ...target };\n transitionEnd = { ...transitionEnd };\n const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n let removedTransformValues = [];\n let hasAttemptedToRemoveTransformValues = false;\n const changedValueTypeKeys = [];\n targetPositionalKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n let from = origin[key];\n let fromType = findDimensionValueType(from);\n const to = target[key];\n let toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n const numKeyframes = to.length;\n const fromIndex = to[0] === null ? 1 : 0;\n from = to[fromIndex];\n fromType = findDimensionValueType(from);\n for (let i = fromIndex; i < numKeyframes; i++) {\n /**\n * Don't allow wildcard keyframes to be used to detect\n * a difference in value types.\n */\n if (to[i] === null)\n break;\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n const current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues =\n removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n value.jump(to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0\n ? window.pageYOffset\n : null;\n const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(([key, value]) => {\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n // Restore scroll position\n if (isBrowser && scrollY !== null) {\n window.scrollTo({ top: scrollY });\n }\n return { target: convertedTarget, transitionEnd };\n }\n else {\n return { target, transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target, transitionEnd };\n}\n\nexport { positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nconst parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { warning, invariant } from '../utils/errors.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n constructor({ parent, props, presenceContext, reducedMotionConfig, visualState, }, options = {}) {\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.scheduleRender = () => frame.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n }\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps) {\n return {};\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.update(this.props, this.presenceContext);\n }\n unmount() {\n visualElementStore.delete(this.current);\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent && this.parent.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n this.features[key].unmount();\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate &&\n frame.update(this.notifyUpdate, false, true);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, initialLayoutGroupConfig) {\n let ProjectionNodeConstructor;\n let MeasureLayout;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n renderedProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Feature: FeatureConstructor, ProjectionNode, MeasureLayout: MeasureLayoutComponent, } = featureDefinitions[name];\n if (ProjectionNode)\n ProjectionNodeConstructor = ProjectionNode;\n if (isEnabled(renderedProps)) {\n if (!this.features[name] && FeatureConstructor) {\n this.features[name] = new FeatureConstructor(this);\n }\n if (MeasureLayoutComponent) {\n MeasureLayout = MeasureLayoutComponent;\n }\n }\n }\n if (!this.projection && ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(this.latestValues, this.parent && this.parent.projection);\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: this,\n scheduleRender: () => this.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return MeasureLayout;\n }\n updateFeatures() {\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Make a target animatable by Popmotion. For instance, if we're\n * trying to animate width from 100px to 100vw we need to measure 100vw\n * in pixels to determine what we really need to animate to. This is also\n * pluggable to support Framer's custom value types like Color,\n * and CSS variables.\n */\n makeTargetAnimatable(target, canMutate = true) {\n return this.makeTargetAnimatableFromInstance(target, this.props, canMutate);\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listener = props[\"on\" + key];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n getVariantContext(startAtParent = false) {\n if (startAtParent) {\n return this.parent ? this.parent.getVariantContext() : undefined;\n }\n if (!this.isControllingVariants) {\n const context = this.parent\n ? this.parent.getVariantContext() || {}\n : {};\n if (this.props.initial !== undefined) {\n context.initial = this.props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = this.props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n closestVariantNode.variantChildren &&\n closestVariantNode.variantChildren.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n if (value !== this.values.get(key)) {\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n }\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key) {\n var _a;\n return this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\"\n ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key]\n : undefined;\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n if (this.events[eventName]) {\n this.events[eventName].notify(...args);\n }\n }\n}\n\nexport { VisualElement };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"10.16.4\", `Attempting to mix Framer Motion versions ${nextValue.version} with 10.16.4 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n // TODO: Only update values that aren't being animated or even looked at\n !existingValue.hasAnimated && existingValue.set(nextValue);\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { parseDomVariant } from './utils/parse-dom-variant.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nclass DOMVisualElement extends VisualElement {\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n return props.style ? props.style[key] : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, { transformValues }, isMounted) {\n let origin = getOrigin(target, transition || {}, this);\n /**\n * If Framer has provided a function to convert `Color` etc value types, convert them\n */\n if (transformValues) {\n if (transitionEnd)\n transitionEnd = transformValues(transitionEnd);\n if (target)\n target = transformValues(target);\n if (origin)\n origin = transformValues(origin);\n }\n if (isMounted) {\n checkTargetForNewValues(this, target, origin);\n const parsed = parseDomVariant(this, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return {\n transition,\n transitionEnd,\n ...target,\n };\n }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.isSVGTag = false;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\n","import { animations } from '../../motion/features/animations.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\n\n/**\n * @public\n */\nconst domAnimation = {\n renderer: createDomVisualElement,\n ...animations,\n ...gestureAnimations,\n};\n\nexport { domAnimation };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n const isStrict = useContext(LazyContext).strict;\n if (context.visualElement) {\n MeasureLayout = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, isStrict, preloadedFeatures, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(MotionContext.Provider, { value: context },\n MeasureLayout && context.visualElement ? (React.createElement(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null,\n useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useInsertionEffect(() => {\n visualElement && visualElement.update(props, presenceContext);\n });\n /**\n * Cache this value as we want to know whether HandoffAppearAnimations\n * was present on initial render - it will be deleted after this.\n */\n const canHandoff = useRef(Boolean(window.HandoffAppearAnimations));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n visualElement.render();\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n if (canHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n visualElement.updateFeatures();\n if (!canHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n /**\n * Once we've handed off animations we can delete HandoffAppearAnimations\n * so components added after the initial render can animate changes\n * in useEffect vs useLayoutEffect.\n */\n window.HandoffAppearAnimations = undefined;\n canHandoff.current = false;\n });\n return visualElement;\n}\n\nexport { useVisualElement };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"onLayoutAnimationStart\",\n \"onLayoutAnimationComplete\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"ignoreStrict\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = {\n ...filteredProps,\n ...visualProps,\n ref,\n };\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\n\n/**\n * @public\n */\nconst m = createMotionProxy(createDomMotionConfig);\n\nexport { m };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = checkStringStartsWith(\"--\");\nconst isCSSVariableToken = checkStringStartsWith(\"var(--\");\nconst cssVariableRegex = /var\\s*\\(\\s*--[\\w-]+(\\s*,\\s*(?:(?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)+)?\\s*\\)/g;\n\nexport { cssVariableRegex, isCSSVariableName, isCSSVariableToken };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(transform, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n if (transform[key] !== undefined) {\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${transform[key]}) `;\n }\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style && isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps);\n for (const key in props) {\n if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","const variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n warning = (check, message) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(message);\n }\n };\n invariant = (check, message) => {\n if (!check) {\n throw new Error(message);\n }\n };\n}\n\nexport { invariant, warning };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","const noop = (any) => any;\n\nexport { noop };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { frame, frameData } from '../frameloop/frame.mjs';\n\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"10.16.4\";\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n this.prev = this.current;\n this.current = v;\n // Update timestamp\n const { delta, timestamp } = frameData;\n if (this.lastUpdated !== timestamp) {\n this.timeDelta = delta;\n this.lastUpdated = timestamp;\n frame.postRender(this.scheduleVelocityCheck);\n }\n // Update update subscribers\n if (this.prev !== this.current && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update velocity subscribers\n if (this.events.velocityChange) {\n this.events.velocityChange.notify(this.getVelocity());\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = () => frame.postRender(this.velocityCheck);\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = ({ timestamp }) => {\n if (timestamp !== this.lastUpdated) {\n this.prev = this.current;\n if (this.events.velocityChange) {\n this.events.velocityChange.notify(this.getVelocity());\n }\n }\n };\n this.hasAnimated = false;\n this.prev = this.current = init;\n this.canTrackVelocity = isFloat(this.current);\n this.owner = options.owner;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @deprecated\n */\n onChange(subscription) {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n }\n return this.on(\"change\", subscription);\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n const unsubscribe = this.events[eventName].add(callback);\n if (eventName === \"change\") {\n return () => {\n unsubscribe();\n /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\n frame.read(() => {\n if (!this.events.change.getSize()) {\n this.stop();\n }\n });\n };\n }\n return unsubscribe;\n }\n clearListeners() {\n for (const eventManagers in this.events) {\n this.events[eventManagers].clear();\n }\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n attach(passiveEffect, stopPassiveEffect) {\n this.passiveEffect = passiveEffect;\n this.stopPassiveEffect = stopPassiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v, render = true) {\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = prev;\n this.timeDelta = delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v) {\n this.updateAndNotify(v);\n this.prev = v;\n this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { cssVariableRegex } from '../../../render/dom/utils/is-css-variable.mjs';\nimport { noop } from '../../../utils/noop.mjs';\nimport { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { colorRegex, floatRegex, isString, sanitize } from '../utils.mjs';\n\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n isString(v) &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\nconst cssVarTokeniser = {\n regex: cssVariableRegex,\n countKey: \"Vars\",\n token: \"${v}\",\n parse: noop,\n};\nconst colorTokeniser = {\n regex: colorRegex,\n countKey: \"Colors\",\n token: \"${c}\",\n parse: color.parse,\n};\nconst numberTokeniser = {\n regex: floatRegex,\n countKey: \"Numbers\",\n token: \"${n}\",\n parse: number.parse,\n};\nfunction tokenise(info, { regex, countKey, token, parse }) {\n const matches = info.tokenised.match(regex);\n if (!matches)\n return;\n info[\"num\" + countKey] = matches.length;\n info.tokenised = info.tokenised.replace(regex, token);\n info.values.push(...matches.map(parse));\n}\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const info = {\n value: originalValue,\n tokenised: originalValue,\n values: [],\n numVars: 0,\n numColors: 0,\n numNumbers: 0,\n };\n if (info.value.includes(\"var(--\"))\n tokenise(info, cssVarTokeniser);\n tokenise(info, colorTokeniser);\n tokenise(info, numberTokeniser);\n return info;\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { values, numColors, numVars, tokenised } = analyseComplexValue(source);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n if (i < numVars) {\n output = output.replace(cssVarTokeniser.token, v[i]);\n }\n else if (i < numVars + numColors) {\n output = output.replace(colorTokeniser.token, color.transform(v[i]));\n }\n else {\n output = output.replace(numberTokeniser.token, sanitize(v[i]));\n }\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parseComplexValue(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = {\n test,\n parse: parseComplexValue,\n createTransformer,\n getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","/**\n * TODO: When we move from string as a source of truth to data models\n * everything in this folder should probably be referred to as models vs types\n */\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nexport { colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n"],"names":["reactPropsRegex","fn","cache","arg","undefined","memoize","prop","test","charCodeAt","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","GLOBAL","Big","MAX_DP","MAX_POWER","NAME","INVALID","INVALID_DP","INVALID_RM","DIV_BY_ZERO","P","UNDEFINED","NUMERIC","round","x","dp","rm","more","xc","c","i","e","length","Error","unshift","pop","stringify","id","n","k","s","constructor","z","RM","push","join","NE","PE","charAt","slice","abs","this","cmp","y","isneg","yc","j","l","div","a","b","DP","bl","bt","ri","bz","ai","al","r","rl","q","qc","qi","d","shift","eq","gt","gte","lt","lte","minus","sub","t","xlty","plus","xe","ye","reverse","mod","ygtx","times","add","pow","one","sqrt","half","Math","toExponential","indexOf","mul","Array","toFixed","toPrecision","sd","toString","valueOf","toJSON","_Big_","nl","replace","search","substring","parse","prototype","version","define","GetIntrinsic","require","callBind","$indexOf","module","exports","name","allowMissing","intrinsic","bind","setFunctionLength","$TypeError","$apply","$call","$reflectApply","call","$defineProperty","$max","value","originalFunction","func","arguments","applyBind","apply","clone","parent","circular","depth","filter","allParents","allChildren","useBuffer","Buffer","Infinity","_clone","child","proto","__isArray","__isRegExp","RegExp","source","__getRegExpFlags","lastIndex","__isDate","Date","getTime","isBuffer","allocUnsafe","copy","Object","getPrototypeOf","create","index","attrs","getOwnPropertyDescriptor","set","__objToStr","o","re","flags","global","ignoreCase","multiline","clonePrototype","f","isArray","cssKeywords","reverseKeywords","key","hasOwnProperty","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","defineProperty","h","g","min","max","delta","rdif","gdif","bdif","v","diff","diffc","reversed","currentClosestKeyword","currentClosestDistance","distance","t1","t2","t3","val","smin","lmin","hi","floor","p","sl","vmin","wh","ratio","m","y2","x2","z2","atan2","PI","hr","cos","sin","args","ansi","color","mult","rem","string","toUpperCase","match","colorString","split","map","char","integer","parseInt","hue","chroma","mg","pure","w","conversions","route","keys","forEach","fromModel","routes","toModel","wrappedFn","result","len","conversion","wrapRounded","raw","wrapRaw","deriveBFS","graph","models","buildGraph","queue","current","adjacents","adjacent","node","link","from","to","wrapConversion","path","cur","colorNames","getRgba","parseFloat","scale","getHsla","alpha","isNaN","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","str","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","reverseNames","Color","obj","values","setValues","red","lightness","whiteness","cyan","JSON","setSpace","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","rgbaArrayNormalized","glRgba","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","col","getValues","space","capped","spaces","maxes","chans","sname","input","String","empty","comma","end","trim","options","settings","left","padLeft","right","padRight","assign","endVal","defaults","startVal","decimalPlaces","duration","useEasing","useGrouping","useIndianSeparators","smartEasingThreshold","smartEasingAmount","separator","decimal","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","error","paused","once","count","startTime","remaining","frameVal","easingFn","Number","printValue","rAF","requestAnimationFrame","update","onCompleteCallback","formatNumber","u","numerals","easeOutExpo","formattingFn","validateValue","resetDuration","el","document","getElementById","window","console","onScrollFns","handleScroll","onscroll","innerHeight","scrollY","getBoundingClientRect","top","pageYOffset","height","setTimeout","start","reset","determineDirectionAndSmartEasing","onStartCallback","pauseResume","cancelAnimationFrame","plugin","render","tagName","textContent","innerHTML","ensureNumber","self","__self__","F","fetch","DOMException","support","Symbol","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","TypeError","toLowerCase","normalizeValue","iteratorFor","items","iterator","next","done","Headers","headers","append","header","getOwnPropertyNames","consumed","body","bodyUsed","Promise","reject","fileReaderReady","reader","resolve","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","get","type","rejected","arrayBuffer","then","text","readAsText","readBlobAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","oldValue","has","callback","thisArg","entries","methods","Request","url","credentials","method","mode","signal","upcased","normalizeMethod","referrer","form","bytes","decodeURIComponent","parseHeaders","rawHeaders","line","parts","Response","bodyInit","status","ok","statusText","response","redirectStatuses","redirect","RangeError","location","err","message","stack","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","ponyfill","ctx","$","M","weekdays","months","ordinal","utcOffset","date","year","month","ceil","D","ms","Q","S","_","O","locale","$L","utc","$u","$x","$offset","$d","NaN","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","years","days","hours","minutes","seconds","milliseconds","weeks","$l","negative","parseFromMilliseconds","calMilliseconds","reduce","Y","YY","YYYY","MM","DD","H","HH","mm","ss","SSS","as","humanize","fromNow","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","isDuration","future","past","hh","dd","yy","fromToBase","relativeTime","thresholds","rounding","toNow","globalScope","ONE","MAX_DIGITS","Decimal","precision","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","MAX_E","carry","xd","yd","Ctor","pr","checkInt32","digitsToString","ws","indexOfLastWord","getZeroString","absoluteValue","comparedTo","xdL","ydL","dividedBy","divide","dividedToIntegerBy","idiv","equals","exponent","getBase10Exponent","greaterThan","greaterThanOrEqualTo","isInteger","isint","isNegative","isPositive","ispos","isZero","lessThan","lessThanOrEqualTo","logarithm","log","base","wpr","ln","modulo","naturalExponential","exp","naturalLogarithm","negated","neg","squareRoot","rL","toDecimalPlaces","todp","toInteger","toint","toNumber","toPower","sign","yIsInt","yn","truncate","toSignificantDigits","tosd","multiplyInteger","temp","compare","aL","bL","prod","prodL","qd","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c0","numerator","parseDecimal","rd","doRound","xdi","xLTy","isExp","arr","config","ps","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","token","singleMatcher","multiMatcher","decodeComponents","components","tokens","encodedURI","replaceMap","exec","customDecodeURIComponent","hasPropertyDescriptors","$SyntaxError","gopd","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","__spreadArray","pack","ar","BrowserInfo","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","REQUIRED_VERSION_PARTS","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","navigator","product","matchUserAgent","ua","matched","_a","browser","regex","uaMatch","matchedRule","versionParts","output","ii","createVersionParts","detectOS","searchBotMatch","addClass","element","className","classList","contains","baseVal","hasClass","setAttribute","replaceClassName","origClass","classToRemove","removeClass","remove","Events","EE","context","addListener","emitter","event","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","__proto__","eventNames","events","names","getOwnPropertySymbols","listeners","handlers","ee","listenerCount","emit","a1","a2","a3","a4","a5","removeListener","on","removeAllListeners","off","prefixed","ReflectOwnKeys","R","Reflect","ReflectApply","target","receiver","Function","ownKeys","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","handler","addErrorHandlerIfEventEmitter","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","prepend","existing","warning","newListener","warned","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","ret","unwrapListeners","arrayClone","wrapListener","setMaxListeners","getMaxListeners","doError","er","prependListener","prependOnceListener","list","position","originalListener","spliceOne","rawListeners","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","src","copyIsArray","deep","_ref","uri","defaultIsExtractableFile","extractFiles","isExtractableFile","files","Map","addFile","paths","file","storedPaths","FileList","ReactNativeFile","File","data","opts","cycles","aobj","bobj","seen","isFinite","out","seenIndex","sort","splice","predicate","isArr","concatty","bound","arrLike","offset","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","SyntaxError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","decodeURI","encodeURI","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Proxy","ReferenceError","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","first","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","isNumeric","mathceil","bignumberError","tooManyDigits","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","intCheck","isOdd","toFixedPoint","BigNumber","configObject","convertBase","parseNumeric","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","DEBUG","ne","maxOrMin","normalise","ni","pows10","EUCLID","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","random","pow2_53","random53bitInt","rand","toBaseOut","baseIn","baseOut","arrL","callerIsToString","multiply","xlo","xhi","klo","khi","yc0","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","p1","p2","exponentiatedBy","isModExp","nIsBig","nIsNeg","nIsOdd","integerValue","isEqualTo","isGreaterThan","isGreaterThanOrEqualTo","isLessThan","isLessThanOrEqualTo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","shiftedBy","rep","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","substr","toFraction","md","d0","d1","d2","n0","n1","toStringTag","for","ascending","ascendingBisect","bisector","bisectRight","center","descending","compare1","compare2","lo","mid","zero","numbers","valueof","e10","e5","e2","tickSpec","stop","step","power","log10","factor","i1","i2","inc","ticks","tickIncrement","tickStep","prefixExponent","formatDecimalParts","coefficient","%","formatDecimal","formatRounded","formatPrefix","prefixes","grouping","thousands","group","identity","width","currencyPrefix","currency","currencySuffix","formatNumerals","percent","nan","newFormat","specifier","fill","formatSpecifier","align","symbol","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","i0","formatTrim","padding","formatLocale","toLocaleString","FormatSpecifier","factory","definition","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","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","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","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","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgb_formatHex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","v0","v1","v2","v3","displayable","formatHex8","formatHsl","clamp","linear","gamma","nogamma","exponential","constant","rgbGamma","colorRgb","rgbSpline","spline","colors","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","object","numberArray","band","bandwidth","unknown","domain","ordinalRange","range","r0","r1","paddingInner","paddingOuter","rescale","sequence","rangeRound","initRange","pointish","point","unit","normalize","bimap","interpolate","polymap","bisect","transformer","transform","untransform","piecewise","interpolateValue","clamper","invert","interpolateNumber","interpolateRound","continuous","linearish","nice","interval","x0","x1","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","E","log2","logp","powp","tickFormat","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","radial","squared","unsquare","compareDefined","ascendingDefined","quickselect","array","swap","quantile","value0","subarray","quantileSorted","threshold","invertExtent","quantiles","quantize","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","t0","timeInterval","floori","offseti","field","previous","every","millisecond","second","getUTCSeconds","timeMinute","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","L","utcDate","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","time","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","X","utcParse","k10","interpolator","sequential","initInterpolator","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","r2","I","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","prestep","maxIter","implicit","InternMap","precisionPrefix","precisionRound","precisionFixed","y0","y1","defined","curve","curveLinear","withPath","area","defined0","x0z","y0z","areaStart","lineStart","lineEnd","areaEnd","arealine","pointX","pointY","lineX0","lineY0","lineY1","lineX1","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","_line","_point","lineTo","closePath","moveTo","BasisClosed","noop","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bump","_x","bumpX","bumpY","Linear","LinearClosed","slope3","h0","h1","s0","s1","slope2","dx","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","_t0","Natural","controlPoints","_y","px","py","Step","_t","stepBefore","stepAfter","pi","tau","series","none","s2","si","sij0","s3","sk","epsilon","tauEpsilon","strings","Path","digits","_append","appendRound","_templateObject","_taggedTemplateLiteral","_templateObject2","_templateObject3","quadraticCurveTo","_templateObject4","_templateObject5","arcTo","x21","y21","x01","y01","l01_2","_templateObject6","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","_templateObject8","_templateObject9","_templateObject7","arc","a0","ccw","dy","cw","da","_templateObject10","_templateObject11","_templateObject12","_templateObject13","rect","_templateObject14","shape","stackValue","stackSeries","orderNone","offsetNone","oz","sz","sqrt3","draw","size","circle","cross","diamond","star","triangle","wye","tan30","tan30_2","kr","kx","ky","equalSizes","Observable","win","_this","_resolutionListener","_onResolutionChanged","_resolutionMediaQueryList","_observers","_window","_installResolutionListener","dispose","_uninstallResolutionListener","devicePixelRatio","subscribe","observer","unsubscribe","dppx","matchMedia","_reinstallResolutionListener","DevicePixelContentBoxBinding","canvasElement","transformBitmapSize","_canvasElement","_bitmapSizeChangedListeners","_suggestedBitmapSize","_suggestedBitmapSizeChangedListeners","_devicePixelRatioObservable","_canvasElementResizeObserver","_canvasElementClientSize","clientWidth","clientHeight","_transformBitmapSize","_allowResizeObserver","allowResizeObserver","_chooseAndInitObserver","_b","disconnect","resizeCanvasElement","clientSize","style","_invalidateBitmapSize","subscribeBitmapSizeChanged","unsubscribeBitmapSizeChanged","subscribeSuggestedBitmapSizeChanged","unsubscribeSuggestedBitmapSizeChanged","applySuggestedBitmapSize","oldSuggestedSize","_resizeBitmap","_emitSuggestedBitmapSizeChanged","newSize","oldSize","bitmapSize","_emitBitmapSizeChanged","_suggestNewBitmapSize","finalNewSize","newSuggestedSize","ro","ResizeObserver","entry","observe","box","catch","isSupported","_initResizeObserver","_initDevicePixelRatioObservable","canvasElementWindow","createDevicePixelRatioObservable","canvasRects","getClientRects","canvasRect","predictedBitmapSize","find","devicePixelContentBoxSize","entrySize","inlineSize","blockSize","bindTo","ownerDocument","defaultView","CanvasRenderingTarget2D","mediaSize","_mediaSize","_bitmapSize","useMediaCoordinateSpace","save","setTransform","_horizontalPixelRatio","_verticalPixelRatio","restore","useBitmapCoordinateSpace","horizontalPixelRatio","verticalPixelRatio","tryCreateCanvasRenderingTarget2D","binding","contextOptions","canvasElementClientSize","getContext","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","delete","getStrictProperties","sameValueZeroEqual","OWNER","areArraysEqual","areDatesEqual","areMapsEqual","aResult","bResult","matchedIndices","aIterable","bIterable","hasMatch","matchIndex","aKey","aValue","bKey","bValue","areObjectsEqual","properties","$$typeof","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","isTypedArray","getTag","deepEqual","createCustomEqual","strict","createInternalComparator","createCustomInternalComparator","createState","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createEqualityComparatorConfig","comparator","tag","createEqualityComparator","meta","createIsEqual","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","instantAnimationState","isBezierDefinition","easing","isWaapiSupportedEasing","supportedWaapiEasing","cubicBezierAsString","ease","easeIn","easeOut","easeInOut","circIn","circOut","backIn","backOut","mapEasingToNativeEasing","calcBezier","subdivisionPrecision","subdivisionMaxIterations","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","isEasingArray","reverseEasing","backInOut","mirrorEasing","easingLookup","circInOut","anticipate","easingDefinitionToFunction","invariant","hueToRgb","mixLinearColor","fromExpo","colorTypes","asRGBA","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","mixImmediate","origin","getMixer","startsWith","mixComplex","mixArray","numValues","blendValue","fromThis","mixObject","template","complex","createTransformer","originStats","analyseComplexValue","targetStats","numVars","numColors","numNumbers","pipe","mixNumber","createMixers","customMixer","mixers","mixerFactory","numMixers","mixer","easingFunction","isClamp","inputLength","progressInRange","progress","defaultOffset","offsetProgress","fillOffset","keyframes","keyframeValues","easingFunctions","absoluteTimes","convertOffsetToTimes","mapTimeToKeyframe","calculatedDuration","velocitySampleDuration","calcGeneratorVelocity","resolveValue","prevT","velocityPerSecond","safeMin","minDuration","maxDuration","minDamping","maxDamping","findSpring","envelope","derivative","bounce","velocity","mass","secondsToMilliseconds","dampingRatio","millisecondsToSeconds","undampedFreq","exponentialDecay","calcAngularFreq","initialGuess","rootIterations","approximateRoot","stiffness","damping","durationKeys","physicsKeys","isSpringType","some","spring","restDelta","restSpeed","isResolvedFromDuration","springOptions","derived","getSpringOptions","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","resolveSpring","angularFreq","dampedAngularFreq","freqForT","sinh","cosh","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","timeConstant","bounceDamping","bounceStiffness","modifyTarget","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","timeReachedBoundary","spring$1","checkCatchBoundary","hasUpdatedFrame","frameloopDriver","passTimestamp","timestamp","frame","cancelFrame","now","frameData","isProcessing","performance","maxGeneratorDuration","calcGeneratorDuration","generator","types","decay","tween","animateValue","resolveFinishedPromise","currentFinishedPromise","autoplay","delay","driver","keyframes$1","repeat","repeatDelay","repeatType","onPlay","onStop","onComplete","onUpdate","speed","hasStopped","updateFinishedPromise","animationDriver","generatorFactory","mapNumbersToKeyframes","mirroredGenerator","playState","holdTime","cancelTime","resolvedDuration","totalDuration","currentTime","tick","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","iterationProgress","iterationIsOdd","isAnimationFinished","finish","stopAnimationDriver","cancel","play","controls","newTime","newSpeed","pause","complete","sample","supportsWaapi","memo","Element","acceleratedValues","createAcceleratedAnimation","valueName","requiresPregeneratedKeyframes","sampleAnimation","pregeneratedKeyframes","animation","keyframeOptions","animate","iterations","direction","animateStyle","owner","syncStart","timeline","cancelAnimation","safeCancel","onfinish","getFinalKeyframe","attachTimeline","playbackRate","setWithVelocity","underDampedSpring","keyframesTransition","getDefaultTransition","valueKey","transformProps","isAnimatable","isNone","isZeroValueString","animateMotionValue","transition","valueTransition","getValueTransition","isTargetAnimatable","defaultOrigin","animatableTemplateValue","noneKeyframeIndexes","getAnimatableNone","getKeyframes","originKeyframe","targetKeyframe","isOriginAnimatable","getVelocity","isTransitionDefined","setValue","createInstantAnimation","HTMLElement","getProps","acceleratedAnimation","isAnimationControls","isKeyframesTarget","when","_delay","delayChildren","staggerChildren","staggerDirection","useIsMounted","isMounted","useRef","useIsomorphicLayoutEffect","PopChildMeasure","React","getSnapshotBeforeUpdate","prevProps","props","childRef","isPresent","sizeRef","offsetHeight","offsetWidth","offsetTop","offsetLeft","componentDidUpdate","children","PopChild","useId","ref","useInsertionEffect","dataset","motionPopId","createElement","head","appendChild","sheet","insertRule","removeChild","PresenceChild","initial","onExitComplete","custom","presenceAffectsLayout","presenceChildren","useConstant","newChildrenMap","useMemo","childId","isComplete","register","PresenceContext","Provider","getChildKey","AnimatePresence","exitBeforeEnter","forceRender","useContext","LayoutGroupContext","forcedRenderCount","setForcedRenderCount","useState","useCallback","postRender","useForceUpdate","filteredChildren","filtered","Children","isValidElement","onlyElements","childrenToRender","exitingChildren","presentChildren","isInitialRender","updateChildLookup","clear","useEffect","presentKeys","targetKeys","numPresent","component","insertionIndex","exitingComponent","onExit","removeIndex","findIndex","presentChild","cloneElement","LazyMotion","features","setIsLoaded","isLazyBundle","loadedRenderer","renderer","loadedFeatures","loadFeatures","_ref2","LazyContext","createContext","SwitchLayoutGroupContext","addDomEvent","eventName","passive","addPointerEvent","addPointerInfo","extractEventInfo","pointType","isPrimaryPointer","pointerType","button","isPrimary","Queue","scheduled","stepsOrder","schedule","steps","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","acc","thisFrame","nextFrame","numToRun","flushNextFrame","toKeepAlive","addToCurrentFrame","createRenderStep","processStep","stepId","processBatch","keepAlive","immediate","createRenderBatcher","createLock","lock","openLock","globalHorizontalLock","globalVerticalLock","getGlobalLock","drag","openHorizontal","openVertical","isDragActive","openGestureLock","Feature","featureProps","exit","focus","hover","tap","pan","inView","layout","featureDefinitions","isEnabled","isForcedMotionValue","layoutId","scaleCorrectors","convertBoundingBoxToBox","bottom","convertBoxToBoundingBox","transformBoxPoints","transformPoint","topLeft","bottomRight","scalePoint","originPoint","applyPointDelta","translate","boxScale","applyAxisDelta","axis","applyBoxDelta","applyTreeDeltas","treeScale","treePath","isSharedTransition","treeLength","projectionDelta","instance","display","layoutScroll","scroll","root","transformBox","hasTransform","latestValues","snapToDefault","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","createDelta","createBox","addScaleCorrector","correctors","isIdentityScale","hasScale","scaleX","scaleY","has2DTranslate","rotateX","rotateY","is2DTranslate","measureViewportBox","measurePageBox","rootProjectionNode","transformPagePoint","viewportBox","shallowCompare","prev","prevLength","resolveVariant","visualElement","resolveVariantFromProps","getCurrent","optimizedAppearDataAttribute","camelToDash","isWillChangeMotionValue","isMotionValue","isNumericalString","testValueType","dimensionValueTypes","vw","vh","findDimensionValueType","valueTypes","setMotionValue","hasValue","getValue","addValue","motionValue","setTarget","resolved","transitionEnd","makeTargetAnimatable","resolveFinalValueInKeyframes","getOriginFromTransition","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","animateTarget","transitionOverride","willChange","animations","animationTypeState","animationState","getState","valueTarget","HandoffAppearAnimations","hasAnimated","appearId","shouldReduceMotion","all","animateVariant","variant","getAnimation","getChildAnimations","variantChildren","forwardDelay","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","notify","animateChildren","sortNodePosition","reversePriorityOrder","variantPriorityOrder","numAnimationTypes","animateList","resolvedDefinition","animateVisualElement","createAnimationState","createTypeState","whileInView","whileHover","whileTap","whileDrag","whileFocus","buildResolvedTypeValues","animateChanges","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","isVariantLabel","activeDelta","isActive","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","checkVariantsDidChange","shouldAnimateType","definitionList","resolvedValues","prevResolvedValues","allKeys","markToAnimate","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setActive","setAnimateFunction","makeAnimator","AnimationFeature","super","updateAnimationControlsSubscription","unmount","mount","prevAnimate","ExitAnimationFeature","presenceContext","prevIsPresent","prevPresenceContext","exitAnimation","addHoverEvent","callbackName","handleEvent","info","HoverGesture","FocusGesture","onFocus","isFocusVisible","matches","onBlur","isNodeOrChild","parentElement","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","PressGesture","removeStartListeners","removeEndListeners","removeAccessibleListeners","startPointerPress","startEvent","startInfo","isPressing","removePointerUpListener","endPointerPress","endEvent","endInfo","checkPressEnd","onTap","onTapCancel","removePointerCancelListener","cancelEvent","cancelInfo","cancelPress","startPress","startAccessiblePress","removeKeydownListener","keydownEvent","keyupEvent","removeBlurListener","handleBlur","onTapStart","removePointerListener","removeFocusListener","observerCallbacks","observers","fireObserverCallback","fireAllObserverCallbacks","observeIntersection","rootInteresectionObserver","lookupRoot","rootObservers","IntersectionObserver","initIntersectionObserver","unobserve","thresholdNames","InViewFeature","hasEnteredView","isInView","startObserver","viewport","margin","rootMargin","amount","isIntersecting","onViewportEnter","onViewportLeave","hasOptionsChanged","prevViewport","hasViewportOptionChanged","gestureAnimations","splitCSSVariableRegex","maxDepth","getVariableValue","fallback","parseCSSVariable","getComputedStyle","getPropertyValue","trimmed","isCSSVariableToken","positionalKeys","isPositionalKey","isNumOrPxType","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","transformPropOrder","positionalValues","_ref3","paddingLeft","paddingRight","_ref4","_ref5","paddingTop","paddingBottom","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","translateX","translateY","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","fromType","toType","numKeyframes","fromIndex","removedTransforms","removeNonTranslationalTransform","jump","convertedTarget","convertChangedValueTypes","changedKeys","originBbox","elementComputedStyle","setStaticValue","targetBbox","_ref12","isBrowser","scrollTo","unitConversion","hasPositionalKey","parseDomVariant","resolveCSSVariables","prefersReducedMotion","hasReducedMotionListener","visualElementStore","featureNames","numFeatures","propEventHandlers","numVariantProps","variantProps","VisualElement","reducedMotionConfig","visualState","isVariantNode","isControllingVariants","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","renderState","projection","scheduleRender","baseTarget","initialValues","initialMotionValues","scrapeMotionValuesFromProps","_props","_prevProps","removeFromVariantTree","addVariantChild","bindToMotionValue","motionMediaQuery","setReducedMotionPreferences","initPrefersReducedMotion","valueIsTransform","removeOnChange","latestValue","isTransformDirty","removeOnRenderRequest","other","sortInstanceNodePosition","isStrict","preloadedFeatures","initialLayoutGroupConfig","ProjectionNodeConstructor","MeasureLayout","renderedProps","FeatureConstructor","ProjectionNode","MeasureLayoutComponent","dragConstraints","layoutRoot","setOptions","alwaysMeasureLayout","isRefObject","animationType","initialPromotionConfig","updateFeatures","feature","build","measureInstanceViewportBox","getStaticValue","canMutate","makeTargetAnimatableFromInstance","transformTemplate","nextValue","prevValue","existingValue","removeValue","updateMotionValuesFromProps","handleChildMotionValue","getVariant","variants","getTransformPagePoint","getClosestVariantNode","closestVariantNode","removeValueFromRenderState","defaultValue","readValue","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","SubscriptionManager","_len","_key","DOMVisualElement","compareDocumentPosition","vars","transformValues","transitionOrigin","getOrigin","newValueKeys","numNewValues","targetValue","checkTargetForNewValues","parsed","HTMLVisualElement","defaultType","getDefaultValueType","default","computedStyle","isCSSVariableName","buildHTMLStyles","childSubscription","styleProp","renderHTML","SVGVisualElement","isSVGTag","camelCaseAttributes","getAttribute","buildSVGAttrs","renderSVG","domAnimation","createDomVisualElement","Component","isSVGComponent","enableHardwareAcceleration","MotionConfigContext","isStatic","reducedMotion","MotionContext","useCreateMotionContext","inherit","getCurrentTreeVariants","variantLabelsAsDependency","motionComponentSymbol","createMotionComponent","createVisualElement","useRender","useVisualState","ForwardRefComponent","forwardRef","externalRef","configAndProps","useLayoutId","lazyContext","visualElementRef","canHandoff","useVisualElement","useMotionRef","layoutGroupId","createHtmlRenderState","transformOrigin","copyRawValuesOnly","useStyle","useInitialMotionValues","useHTMLProps","htmlProps","dragListener","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","tabIndex","validMotionProps","isValidMotionProp","shouldForward","isValidProp","createSvgRenderState","useSVGProps","_isStatic","visualProps","rawStyles","createUseRender","forwardMotionProps","filteredProps","isDom","filterProps","elementProps","renderedChildren","makeUseVisualState","make","createRenderState","onMount","makeLatestValues","makeState","scrapeMotionValues","motionValues","resolveMotionValue","isControllingVariants$1","isVariantNode$1","isInitialAnimationBlocked","variantToSet","svgMotionConfig","read","dimensions","getBBox","htmlMotionConfig","createConfig","componentCache","_target","createMotionProxy","checkStringStartsWith","cssVariableRegex","lowercaseSVGElements","includes","defaultValueType","defaultValueTypes","numberValueTypes","backgroundColor","outlineColor","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","int","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxWidth","maxHeight","marginTop","marginRight","marginBottom","marginLeft","rotateZ","scaleZ","skew","skewX","skewY","translateZ","perspective","transformPerspective","originX","progressPercentage","originY","originZ","numOctaves","translateAlias","numTransforms","getValueAsType","hasTransformOrigin","transformIsNone","valueType","valueAsType","transformIsDefault","allowTransformNone","transformString","transformName","buildTransform","getProjectionStyles","newValues","calcOrigin","dashKeys","camelKeys","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","viewBox","pxOriginX","pxOriginY","calcSVGTransformOrigin","spacing","useDashCase","buildSVGPath","_styleProp","scrapeMotionValuesFromProps$1","currentValues","addUniqueItem","item","removeItem","any","combineFunctions","transformers","toFromDifference","isCustomValue","toValue","subscriptions","numSubscriptions","getSize","useLayoutEffect","frameDuration","collectMotionValues","MotionValue","timeDelta","lastUpdated","canTrackVelocity","updateAndNotify","scheduleVelocityCheck","change","velocityChange","renderRequest","velocityCheck","onChange","subscription","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","getPrevious","startAnimation","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","isColorString","splitColor","alpha$1","sanitize","isString","rgbUnit","clampRgbUnit","testProp","singleColorRegex","aName","bName","cName","floatRegex","maxDefaults","applyDefaultFilter","functionRegex","functions","cssVarTokeniser","countKey","colorTokeniser","colorRegex","numberTokeniser","tokenise","tokenised","originalValue","parseComplexValue","convertNumbersToZero","createUnitType","endsWith","unwrappedValue"],"sourceRoot":""}